2017-12-04 27 views
0

サーバー側でREST APIと通信する2つのWebサイトがあります。 メインのWebサイトにはメインドメインがあり、2番目のWebサイトにはサブドメインがあります。例えば www.example.comwww.admin.example.comサーバー側のIISでPHPを使用し、クライアント側でアンカーを使用するとCORSエラーが発生する

私はRESTのwww.example.comルートディレクトリ上のAPIとを持っている場合www.example.com APIへのアドレスはすべて問題ありませんが、www.admin.example.comがAPIに対処しようとしているときにエラーが発生します。

プリフライト要求に応答しても、 Access-Control-Allow-Origin 'ヘッダーが要求されたリソースに存在します。 Origin 'http://admin.example.com'はアクセスできません。

私は私のRestController.phpファイルで、このPHPコードの行があります:私はまた私のweb.configファイルに次のコードを追加しようとしました

header("Access-Control-Allow-Origin: *"); 

<system.webServer> 
    <httpProtocol> 
    <customHeaders> 
     <add name="Access-Control-Allow-Origin" value="*" /> 
     <add name="Access-Control-Allow-Headers" value="*" /> 
     <add name="Access-Control-Allow-Methods" value="GET, PUT, POST, DELETE, OPTIONS" /> 
     <add name="Access-Control-Max-Age" value="1000" /> 
    </customHeaders> 
    </httpProtocol> 
</system.webServer> 

をが、それでも私は「アクセス制御許可元」ヘッダーエラー、または「アクセス制御許可元」ヘッダーに複数の値「*、* 1つしか許されていない」

私はそれが重要かどうかわかりませんが、私たちはを使用しています。クライアント側には、があります。

問題は何か、IISの問題かPHPの問題かクライアント側の問題なのでしょうか?

はあなただけで一つの場所にアクセス制御 - 許可 - 起源を設定する必要があります

+1

https://blogs.iis.net/iisteam/introducing-iis-cors-1-0 Microsoftは、CORS応答を設定するための新しいOOBモジュールを導入しました。 –

+0

ありがとうございました!それを解決した – guy

答えて

1

は、以前はあなたがあなた自身のコードや他のハッキング方法を記述するか持っていますが、今:https://developer.mozilla.org/en-US/docs/Glossary/Preflight_request

は、さらにあなたはこのスレッドでいくつかのより多くの情報を見つけることができますマイクロソフトは、IIS CORS Moduleと呼ばれる公式のIIS拡張を出荷しています。

CORS応答をインストールしたら簡単に設定できます。

0

まず、ありがとうございました。私はあなたのPHPコントローラでそれを行うことをお勧めします。それ以外の場合は、「アクセス制御許可元」ヘッダーに複数の値 '*、*が含まれていますが、1つだけが許可されています。

2番目にGETリクエストを実行しても問題ありませんが、POSTリクエストを行っている場合は、「プリフライトのリクエストに対する応答がアクセス制御のチェックを通過しません。その理由は、ブラウザがOPTIONSプリフライトリクエストを送信するためです。この要求は、あなたが許可して処理するために(あなたが投稿をするように)サーバー側で処理する必要があります。

あなたは、プリフライトリクエストについてはこちらの詳細を読むことができます:CORS with php headers

関連する問題