3

Windows AzureでホストされているWCFサービスを実行しており、他の場所でホストされているWebサイトからPOST要求を実行しようとしていますが、これは非常に難しいことがわかっています。どうやら、iis7側で実際のPOSTリクエストの前にOPTIONSプリフライトリクエストを許可することは本当に難しいようです。

web.config<system.webserver> に定義がありますが

  <httpProtocol>
      <customHeaders>
        <add name="Access-Control-Allow-Origin" value="*" />
        <add name="Access-Control-Allow-Headers" value="Origin,X-Requested-With,Content-Type,Accept" />
        <add name="Access-Control-Allow-Methods" value="POST,GET,OPTIONS"/>
      </customHeaders>
    </httpProtocol>

とセキュリティのために

<security>
  <requestFiltering>
    <verbs>
      <add verb="OPTIONS" allowed="true" />
    </verbs>
  </requestFiltering>
</security>

HTTP405メソッドが許可されていない応答を受け取り続けます。

私はここstackoverflowでさまざまな投稿から複数のトリックを試しましたが、何も機能していないように見えるので必死になり始めています...サイトはプリフライト応答を気にしないようですが、IEはHTTP405応答でハングします。

とにかくweb.configを介してプリフライトOPTIONSリクエストを許可することが可能であることを誰かが知っていますか(そしてその方法)、またはプリフライトリクエストのために独自のハンドラーの実装を開始する必要がありますか(そうであれば例は素晴らしいでしょう:))?

ありがとう、マティ

4

2 に答える 2

1

このスレッドをチェックしてください。Web RolesにはWebDAVがインストールされていると思います(確認できませんが)。Web ロール インスタンスに RDP し、これが状況であるかどうかを確認する必要があります。そうである場合は、 WebDAV を削除するためのスタートアップ タスクを作成する必要があります。

また、appcmd または vbscript を介して IIS で動詞を構成する方法に関する記事やその記事を確認することもできます(どちらもスタートアップ タスクを介して実行できます)。

これらは、web.config レベルでは許可されず、Application Host 構成レベルで構成する必要があるようです。

于 2012-12-07T12:22:57.803 に答える
1

IIS (少なくともバージョン 7.*) には、プリフライト リクエストの処理に関するバグがあります。私は古典的な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>
于 2016-11-03T15:13:57.087 に答える