12

クロスドメイン リクエストを作成しようとしていますが、サーバーは次のヘッダーを送信するように構成されています。

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)エラーが発生します。

問題は何か、それを修正する方法はありますか?

4

3 に答える 3

10

私は2つの解決策を提案します:

1)WebAPIを使用している場合は、慣例により次のようになるオプションメソッドを実装する必要があります。

public class XXXController : ApiController
{
    // OPTION http-verb handler
    public string OptionsXXX()
    {
        return null; // HTTP 200 response with empty body
    }

    ...
}

2) WebAPIを使用していない場合は、コードのどの部分がOPTIONS 405 (Method Not Allowed)OPTION呼び出しのエラーをトリガーするかを理解してください。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>
于 2013-02-08T00:45:44.017 に答える
7

Web サーバー/アプリケーションは、すべての HTTP GET 動詞および POST 動詞要求に対して上記の応答ヘッダーを送信するように構成されている可能性があります。しかし、Web サーバーは HTTP OPTIONS Verb を処理するように構成されていますか?

詳細が必要な場合は、使用している Web サーバーとアプリケーション プログラミング技術を提供してください。

ちょっとした背景として、いくつかのカスタム リクエスト ヘッダーを含むクロス ドメイン リクエストがある場合、ブラウザは OPTIONS リクエストを送信します。このリクエストは、実際のリクエストの前に行われます。このリクエストがあなたが言及した応答ヘッダーで返された場合にのみ、ブラウザは実際のリクエストを行います。

// これらの OPTIONS リクエストはプリフライト リクエストと呼ばれます -- 通常、ブラウザの開発ツールはそれらをネットワーク内で追跡しません tab.f

于 2012-11-08T18:03:45.910 に答える