私はAPIを書いており、それを達成するためにLaravel 4を使用しています。私のAPIは別のドメインにあります。次のように仮定します。http://api-example.com/
そして、基本認証を使用して、バックボーンを介して Web アプリ (つまり) の API に ajax リクエストを作成しようとすると、mydomain.com
正常に機能することもありますが、機能しないこともあります。私はその理由を理解しようとしています。以下は私のApp::before
フィルターとApp::after
フィルターです。
App::before(function($request)
{
if($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
$statusCode = 204;
$headers = [
'Access-Control-Allow-Origin' => 'http://mydomain.com',
'Allow' => 'GET, POST, OPTIONS',
'Access-Control-Allow-Headers' => 'Origin, Content-Type, Accept, Authorization, X-Requested-With',
'Access-Control-Allow-Credentials' => 'true'
];
return Response::make(null, $statusCode, $headers);
}
});
そして私のアフターフィルター:
App::after(function($request, $response)
{
$response->headers->set('Access-Control-Allow-Origin', 'http://mydomain.com');
$response->headers->set('Allow', 'GET, POST, OPTIONS');
$response->headers->set('Access-Control-Allow-Headers', 'Origin, Content-Type, Accept, Authorization, X-Requested-With');
$response->headers->set('Access-Control-Allow-Credentials', 'true');
return $response;
});
問題は、資格情報を使用して投稿リクエストを作成しようとすると/login
、API がデータベースをチェックし、ユーザーの API キーを取得することです。これはうまく機能しています。しかし、クロムに POST リクエストを送信しようとすると、/users
次のエラーが表示されます。
XMLHttpRequest cannot load http://api-example.com/users. Origin http://mydomain.com is not allowed by Access-Control-Allow-Origin.
インターネットから見つけることができるすべてのものに設定Access-Control-Allow-Origin
するなど、すべてを試しました。'*'
しかし、これまでのところ何も機能していません。どうすればいいのかわからない。