###前提・実現したいこと
CakePHPでREST APIを作り、AngularからHttp.getでデータを取得するプログラムを作っています
###発生している問題・エラーメッセージ
AuthorizationヘッダをくっつけてGETリクエストすると404 Not Foundになります
エラーメッセージ 2017-06-22 11:22:05 Error: [Cake\Routing\Exception\MissingControllerException] Controller class Users.json could not be found. Exception Attributes: array ( 'class' => 'Users.json', 'plugin' => false, 'prefix' => false, '_ext' => false, ) Request URL: /users.json Referer URL: http://localhost:4200/account
###該当のソースコード
一部抜粋
PHP
1// Routes.php 2Router::scope('/', function ($routes) { 3 $routes->extensions(['json']); 4 $routes->resources('Users'); 5}); 6 7// AppController 8class AppController extends Controller 9{ 10 public function initialize() 11 { 12 parent::initialize(); 13 14 $this->loadComponent('RequestHandler'); 15 $this->loadComponent('Flash'); 16 17 // CORS 18 $this->response->cors($this->request) 19 ->allowOrigin(['*']) 20 ->allowMethods(['GET', 'POST', 'OPTIONS']) 21 ->allowHeaders(['X-CSRF-Token, Authorization']) 22 ->allowCredentials() 23 ->exposeHeaders(['Link']) 24 ->maxAge(300) 25 ->build(); 26 } 27} 28 29// UsersController 30class UsersController extends AppController 31{ 32 public function index() 33 { 34 $users = $this->paginate($this->Users); 35 36 $this->set(compact('users')); 37 $this->set('_serialize', 'users'); 38 } 39}
TypeScript
1 private getServerData(user: firebase.User) { 2 user.getToken(true).then((token) => { 3 let headers = new Headers({ 4 'Authorization': 'Bearer ' + token, 5 }); 6 let options = new RequestOptions({ 7 headers: headers 8 }); 9 this.http.get( 10 'http://localhost:8765/users.json', 11 options 12 ).subscribe((res) => { 13 console.log(res); 14 }); 15 }); 16 }
###試したこと
以下の例では200が返ってきて成功します
・Authorizationヘッダなし
・Chromeを--disable-web-securityで起動しCORSを無効化した状態でリクエスト
・当該URLをアドレスバーで直接叩く
・アドレスから.jsonを取り払ってリクエスト
404 Not Foundになるのは
・localhost:8765/users""".json"""に
・Authorization: Bearer hogehogeをつけて
・プリフライトリクエスト(OPTIONSメソッド)が送信される状態
でリクエストしたときになります
###補足情報(言語/FW/ツール等のバージョンなど)
Angular 4
CakePHP 3.4
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/06/23 01:21
2017/06/23 01:28 編集
2017/06/23 03:19
2017/06/23 04:05