2016-07-05 42 views
9

GoogleとStack Overflowで多くの検索を行って問題の解決方法を見つけましたが、何も効果がありませんでした。ここでWindows認証でHTTP 401を返すCORSプリフライトリクエスト

は私の問題です:

  • 私はOPTIONS HTTPメソッドを直接操作することはできませんWebDEVと呼ばれる特別なプログラミング環境でIIS 7を使用します。したがって、コードを使用して何らかの種類のサーバー側の要求処理を提案するすべてのソリューションは実現不可能です。

  • は、私は、このサーバーに投稿するCORSを使用しているページを持っている匿名アクセス

  • をウィンドウの認証を使用して無効にする必要があります。このPOSTにはContent-type: Octet-streamが必要です。ブラウザによってプリフライトが発行されます。

  • 私は匿名アクセスを有効にすると、すべてが正常に動作します(CORSがうまく設定されている)

  • 私は匿名アクセスを無効にすると、それは資格情報が含まれていないと、サーバは、プリフライトリクエストに対するHTTP 401不正なレスポンスを返信情報。

  • public class CORSModule : IHttpModule 
        { 
    
          public void Dispose() { 
          } 
    
          public void Init(HttpApplication context) 
          { 
           context.PreSendRequestHeaders += delegate 
           { 
            if (context.Request.HttpMethod == "OPTIONS") 
            { 
             var response = context.Response; 
             response.StatusCode = (int)HttpStatusCode.OK; 
            } 
           }; 
          } 
        } 
    

(多分、IISに正しくモジュールを追加することができませんでした)の質問に私はこのようなOPTIONS要求を受け入れるIIS用のモジュールを書き込もうとしましたが、それは動作しませんでした匿名アクセスを有効にしたり、サーバー側のコードを書き込んだりすることなく、プリフライト要求に対してHTTP 200でIISに応答させるにはどうすればよいですか? IISのための簡単な構成や既製のモジュールはありますか?少なくとも、上記のモジュールをIIS 7にインストールするための詳細な手順は何ですか?

答えて

7

ここでは、「URLリライト」IISモジュールを使用するソリューションを紹介します。それは完全に動作します。

の1-ストップIISサービス(そうでないかもしれない必要な)

2 - 「アプリケーション」タブに移動し、「URLリライト」を検索してダウンロードしhttps://www.microsoft.com/web/downloads/platform.aspx

3-「Webプラットフォームインストーラー」をインストールします。

、4-

5オープンIISの設定ツール(多分必要はない)、この修正プログラムKB2749660をダブルクリックして "URLリライト"

をインストールします。

7はそれを「マッチURL」で

8を任意の名前を付け、このパターンを指定する新しいblankruleを追加します。「条件」で.*

9-、この条件項目を指定します:{REQUEST_METHOD}このパターン: "アクション" で^OPTIONS$

10-、指定:アクションタイプPersonalized response、状態コード200、理由Preflight、説明Preflight

11-サーバーを起動します

これで、サーバーは、認証に関係なく、プリフライト要求に対する200ステータスコードの応答で応答する必要があります。

備考:すべての圧縮も無効にしていますが、重要かどうかわかりません。

+2

生活 –

0

モジュールが優先されるためには、干渉する可能性のあるIIS内のモジュールを上書きする必要があります。たとえば、web.configで匿名を有効または有効にし、必要に応じてトラフィックを傍受してフィルタリングするための属性を作成することができます。

AhmadWabbiの答え、あなたのweb.configファイルに簡単にXMLを貼り付けから
4

:仲間+1セーバー

<system.webServer> 
    <rewrite> 
     <rules> 
      <rule name="CORS Preflight Anonymous Authentication" stopProcessing="true"> 
       <match url=".*" /> 
       <conditions> 
        <add input="{REQUEST_METHOD}" pattern="^OPTIONS$" /> 
       </conditions> 
       <action type="CustomResponse" statusCode="200" statusReason="Preflight" statusDescription="Preflight" /> 
      </rule> 
     </rules> 
    </rewrite> 
</system.webServer> 
関連する問題