ホームページ > ウェブフロントエンド > jsチュートリアル > CORS を有効にすると、IIS7 が 405 Method Not allowed エラーを返すのはなぜですか?

CORS を有効にすると、IIS7 が 405 Method Not allowed エラーを返すのはなぜですか?

Linda Hamilton
リリース: 2024-10-28 19:52:02
オリジナル
1083 人が閲覧しました

Why Does IIS7 Return a 405 Method Not Allowed Error When Enabling CORS?

IIS7 でのクロスオリジン リソース共有の有効化

非同期リソース要求を許可するには、IIS7 でクロスオリジン リソース共有 (CORS) を有効にする必要があります。ブラウザのセキュリティ制限を克服して、さまざまなオリジン間で作成されます。ただし、IIS7 が 200 応答に成功する前に 405 メソッドが許可されていないエラーを返すと、問題が発生する可能性があります。

405 メソッドが許可されていないエラーの解決

405 エラーは通常、この問題は、IIS7 がアプリケーションに転送するのではなく、実際の要求に先立って HTTP OPTIONS 応答を処理するために発生します。これを修正するには:

  1. IIS7 でサイトのハンドラー マッピングに移動します。
  2. 「OPTIONSVerbHandler」エントリを見つけてダブルクリックします。
  3. 「ProtocolSupportModule」を変更します。
  4. 実行可能パスを次のように設定します:
    %windir%Microsoft.NETFrameworkv4.0.30319aspnet_isapi.dll.

これらの変更により、IIS7 は HTTP を転送します。 OPTIONS 動詞をアプリケーションに追加します。

代替解決策: BeginRequest で OPTIONS 動詞を処理する

あるいは、アプリケーションの BeginRequest メソッドで HTTP OPTIONS 動詞を手動で処理することもできます。

<code class="c#">protected void Application_BeginRequest(object sender, EventArgs e)
{
    HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "*");

    if (HttpContext.Current.Request.HttpMethod == "OPTIONS")
    {
        // Handle HTTP OPTIONS pre-flight request
        HttpContext.Current.Response.AddHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE");
        HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers", "Content-Type, Accept");
        HttpContext.Current.Response.AddHeader("Access-Control-Max-Age", "1728000");
        HttpContext.Current.Response.End();
    }
}</code>
ログイン後にコピー

これらのアプローチのいずれかを実装すると、IIS7 で CORS を有効にし、405 エラーを解決して、クロスオリジン リクエストを確実に成功させることができます。

以上がCORS を有効にすると、IIS7 が 405 Method Not allowed エラーを返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート