興味深い質問です。response headersIIS から削除するすべてのメソッドはAllowおよびPublicヘッダーでは機能しないようです。OPTIONS要求は常に次のように返されます。
Allow: OPTIONS, TRACE, GET, HEAD, POST
Public: OPTIONS, TRACE, GET, HEAD, POST
サーバーが実際に許可するものに関係なく。
IISのすべての要求はモジュールによって処理され、OPTIONS要求はによって処理されますProtocolSupportModule。
そのモジュールを削除すると、サーバーはオプションリクエストに応答しなくなりますが、これは引き続きサポートする必要があるため、別のモジュールを使用してそれらに応答する必要があります。
開いた:
%SystemRoot%\System32\inetsrv\config\applicationHost.config
OPTIONSVerbHandlerその行のコメントを検索し、その行にいる間も上(TRACEVerbHandler)のコメントを検索します。次に、新しいノードを追加します。
<add name="MyOPTIONSVerbHandler" path="*" verb="OPTIONS" modules="StaticFileModule" requireAccess="None" />
ブロック全体は次のようになります。
<!-- <add name="TRACEVerbHandler" path="*" verb="TRACE" modules="ProtocolSupportModule" requireAccess="None" />
<add name="OPTIONSVerbHandler" path="*" verb="OPTIONS" modules="ProtocolSupportModule" requireAccess="None" /> -->
<add name="MyOPTIONSVerbHandler" path="*" verb="OPTIONS" modules="StaticFileModule" requireAccess="None" />
これで、staticFileModuleはOPTIONSリクエストを処理しますが、コンテンツを返しません。
あなたが今作る場合はOPTIONS、サーバーへのリクエストを、あなたが得る文句を言わないAllowでもPublic、ヘッダ、あなたはweb.configファイルに簡単に追加することができます
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Allow" value="GET,POST,HEAD" />
<add name="Public" value="GET,POST,HEAD" />
</customHeaders>
</httpProtocol>
</system.webServer>
これで、OPTIONS要求は必要に応じて機能しますが、これらの追加ヘッダーは、まだ有効であると思われるGETor POST要求とともに送信されます。
これらのヘッダーをOPTIONSリクエストにのみ使用したい場合は、これらのヘッダーを設定する単純なhttpモジュールを記述して、上記で使用したStaticFileModuleの代わりに使用することができます。