興味深い質問です。response headers
IIS から削除するすべてのメソッドは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
要求は必要に応じて機能しますが、これらの追加ヘッダーは、まだ有効であると思われるGET
or POST
要求とともに送信されます。
これらのヘッダーをOPTIONS
リクエストにのみ使用したい場合は、これらのヘッダーを設定する単純なhttpモジュールを記述して、上記で使用したStaticFileModuleの代わりに使用することができます。