2012-11-08 10 views
6

クロスドメイン要求を行い、サーバーが次のヘッダーを送信するように構成しています。オプション405 :(メソッドが許可されていない)サーバーがアクセス制御許可メソッドを送信するかどうかに関係なく、オプション、取得、ヘッド、POST

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)エラーを受け取ります。

任意のアイデア問題は何ですか?問題を解決する方法はありますか?

+0

可能な複製(http://stackoverflow.com/questions/1653308/access-control-allow-origin-multiple-origin-domains) – kenorb

答えて

6

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

さらに詳しい情報が必要な場合は、使用しているウェブサーバーとアプリケーションプログラミング技術をご提供ください。

少しの背景で、いくつかのカスタムリクエストヘッダーでドメイン間リクエストがあると、ブラウザはOPTIONSリクエストを送信します。この要求は、実際の要求の前に行われます。ブラウザは、このリクエストがあなたが言及したレスポンスヘッダを返す場合にのみ、実際のリクエストを行います。あなたはWebAPIのを使用している場合

1): -

//これらのオプションのリクエストが呼ばれているプリフライトリクエストは、一般のdevのツールは

+1

ご意見ありがとうございます。サーバーはIIS 7です。オプションを処理するにはどうすれば設定できますか? –

+0

良い方向性のように聞こえます。あなたは 'HTTPオプション'動詞を扱う方法に関するいくつかの推奨リンクを提供できますか? – Blaise

+1

オプション動詞を扱うための@Blaiseの最短説明はhttp://stackoverflow.com/a/13646169/570239で説明されています - ウェブAPI api <2とasp.net mvc for generatの詳細については、http:// wwwを参照してください。 .codeguru.com/csharp/.net/net_asp/using-cross-origin-resource-sharing-cors-in-asp.net-web-api.htmlを参照してください。 web api 2のチェックhttp://www.asp.net/web-api/overview/security/enabling-cross-origin-requests-in-web-api – humblelistener

7

私は2つのソリューションを示唆している彼らのネットワークtab.fでそれらを追跡いけないブラウザアンクルにしてみてくださいWEBAPI使用

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

    ... 
} 

2)あなたがいる場合ないは慣例によってのようになりますオプションのメソッドを実装するが必要あなたのコードのどの部分がOPTION呼び出しのためにOPTIONS 405 (Method Not Allowed)エラーをトリガするかを確認してください。

<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> 
+0

申し訳ありませんが、この問題を解決できないことがわかりました。問題の原因となっているものでなければなりません。 – Blaise

1

あなたはデフォルトのOPTIONSVerbHandlerを変更する必要があります。その場合は、私は作品Web.configファイルこれら<customHeaders/>に追加しようとするかどうかを確認します。 ASPの古典を使用している場合、それはあなたの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>