私はYii2 Frameworkであらかじめ構築されたAPI(restfullではない)を扱っています。 JSONデータで応答し、ユーザーの種類と資格トークンに応じて要求を受け入れます。今では、CORSの競合を引き起こしている別の場所(ドメイン)にあるアプリを作成する必要があります。Yii2:非restful APIにCORSを許可する方法
私のアプリはjQueryで、データの送受信に$.ajax
を使用しています。 このCORSの競合を回避し、APIをajax経由で使用するにはどうすればよいですか?
よろしく
UPDATE:
public function behaviors()
{
$behaviors = parent::behaviors();
$behaviors['corsFilter'] = [
'class' => \yii\filters\Cors::className(),
'cors' => [
'Origin' => "*",
'Access-Control-Request-Method' => ['POST', 'GET'],
'Access-Control-Allow-Credentials' => true,
'Access-Control-Max-Age' => 3600,
],
];
return $behaviors;
}
しかし、私はまだエラーを取得しています:IStrangerは、私は次のコードを追加した彼の答えに私に言ったよう
。コードにbeforeAction
があると問題になることがありますか?
これはRAW HEADER
リクエストです:
Host: domain.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:48.0) Gecko/20100101 Firefox/48.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Referer: http://localhost/main/main.html
Content-Length: 296
Origin: http://localhost
Connection: keep-alive
は応答:
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Connection: Keep-Alive
Content-Length: 101
Content-Type: application/json; charset=UTF-8
Date: Thu, 22 Sep 2016 17:23:48 GMT
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Keep-Alive: timeout=5, max=100
Pragma: no-cache
Server: Apache/2.4.17 (Win64) PHP/5.6.16
Set-Cookie: PHPSESSID=ph0b322gbq65m1f3m8fp9fphc0; path=/; HttpOnly
X-Powered-By: PHP/5.6.16
'、=> [ "*"]' '起源' を置換してください。 次に、ブラウザデバッガ(「ネットワーク」タブ)を使用してAJAXリクエストのhttpヘッダーをチェックします。要求ヘッダーには 'Origin'値があり、応答ヘッダーには' Access-Control-Allow-Credentials'と 'Access-Control-Allow-Origin'が必要です。 – IStranger
@IStranger正常に動作しましたが、今は500エラーが発生しますが、OPTIONSという要求タイプを使用しています。 –
@IStranger最後のコメントを無視しても、動作しません。 –