Интересный вопрос. Все методы , чтобы удалить 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или POSTзапросами, которые, я думаю, все еще действительны http.
Если вы хотите использовать эти заголовки только для OPTIONSзапросов, вы можете написать простой http-модуль, который устанавливает эти заголовки, и использовать его вместо StaticFileModule, который я использовал выше.