私のReactアプリケーションが自分のコンピュータ上でホスティングしているAPIと通信するのに問題があります。私はCodeIgniterに慣れていないので、その部分でエラーや誤解を取ることは安全です。私はapplication/config/rest.php
の上部にheader('Access-Control-Allow-Origin:*');
と他のファイルを追加しようとしました。私は、APIリクエストを行うと、飛行前のOPTIONS要求がどのように見えるれ、明らかに最初に送信されます。CodeIgniterとReactアプリケーションの間でCORSを動作させる際に問題が発生する
Request Headers:
Host: localhost:8000
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:51.0) Gecko/20100101 Firefox/51.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Access-Control-Request-Method: GET
Access-Control-Request-Headers: apikey
Origin: http://localhost:3000
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
Response Headers:
Access-Control-Allow-Origin: *
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Connection: close
Content-Type: text/html; charset=UTF-8
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Host: localhost:8000
Pragma: no-cache
Set-Cookie: ci_session=3ba4cibif5sdgtfjjopmokt8k2fc1c1j; expires=Fri, 24-Feb-2017 19:18:05 GMT; Max-Age=7200; path=/; HttpOnly
X-Powered-By: PHP/5.5.38
OPTIONS応答は、私が取得し、しようとしていますリソース、サーバー上でAPI種子200です。 200(私のアプリケーションはこれを見ていない)と応答します。反応フロントエンドは、見て、スーパー役に立たない
Error: Network Error
Stack trace:
[email protected]://localhost:3000/bundle.js line 4801 > eval:15:15
[email protected]://localhost:3000/bundle.js line 4789 > eval:87:14
エラーを記録し、私のアプリケーションは、決してさえ(Firefoxの開発ツールに応じて)GETリクエストもしません。 OPTIONの応答のデータは完全に空です。ここで何が起こっているのですか?それから私は私のヘッダー内のAPIキーを使用して、通常の要求を行うことができます
header('Access-Control-Allow-Origin: *');
header("Access-Control-Allow-Headers: X-API-KEY, Origin, X-Requested-With, Content-Type, Accept, Access-Control-Request-Method");
header("Access-Control-Allow-Methods: GET, POST, OPTIONS, PUT, DELETE");
$method = $_SERVER['REQUEST_METHOD'];
if($method == "OPTIONS") {
die();
}
を: