クロスドメインリクエストを作成しようとしていますが、サーバーは次のヘッダーを送信するように構成されています。
_Access-Control-Allow-Credentials:true
Access-Control-Allow-Headers:x-requested-with, Authorization
Access-Control-Allow-Methods:OPTIONS, GET, HEAD, POST
Access-Control-Allow-Origin:*
_
しかし、OPTIONリクエストが行われると、OPTIONS 405 (Method Not Allowed)
エラーが発生します。
問題は何ですか、それを修正する方法はありますか?
私は2つの解決策を提案します:
1)WebAPIを使用している場合は、必要オプションメソッドを実装します。これは、慣例により次のようになります。
_public class XXXController : ApiController
{
// OPTION http-verb handler
public string OptionsXXX()
{
return null; // HTTP 200 response with empty body
}
...
}
_
2)WebAPIを使用している場合はnotコードのどの部分が、OPTION呼び出しのOPTIONS 405 (Method Not Allowed)
エラーをトリガーするかを理解してください。その場合、_Web.config
_ファイルにこれらの_<customHeaders/>
_が機能するかどうかを確認します。
_<configuration>
<system.webServer>
<httpProtocol>
<customHeaders>
<!-- CORS temporary solution -->
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="Content-Type, Authorization, Accept, X-Requested-With" />
<add name="Access-Control-Allow-Methods" value="OPTIONS, TRACE, GET, HEAD, POST, PUT" />
</customHeaders>
</httpProtocol>
</system.webServer>
</configuration>
_
Webサーバー/アプリケーションは、HTTPGET動詞およびPOST動詞要求ごとに上記の応答ヘッダーを送信するように構成されている可能性があります。しかし、WebサーバーはHTTP OPTIONS動詞を処理するように構成されていますか?
詳細が必要な場合は、使用しているWebサーバーとアプリケーションプログラミングテクノロジーを提供してください。
少し背景がありますが、カスタムリクエストヘッダーを含むクロスドメインリクエストがある場合、ブラウザはOPTIONSリクエストを送信します。このリクエストは、実際のリクエストの前に行われます。ブラウザは、このリクエストがあなたが言及したレスポンスヘッダーとともに戻ってきた場合にのみ、実際のリクエストを行います。
//これらのOPTIONSリクエストはプリフライトリクエストと呼ばれます-通常、ブラウザの開発ツールはネットワークタブでそれらを追跡しません。f
デフォルトのOPTIONSVerbHandlerを変更する必要があります。 asp classicを使用している場合は、Web.configファイルに次の行を追加することを意味します。
<handlers>
<remove name="OPTIONSVerbHandler" />
<add name="OPTIONSVerbHandler" path="*" verb="OPTIONS" modules="IsapiModule" scriptProcessor="C:\Windows\System32\inetsrv\asp.dll" resourceType="Unspecified" requireAccess="None" />
</handlers>