Pergunta interessante. Todos os métodos para remover response headersdo IIS parecem não funcionar para os cabeçalhos Allowe Public, uma OPTIONSsolicitação sempre retorna:
Allow: OPTIONS, TRACE, GET, HEAD, POST
Public: OPTIONS, TRACE, GET, HEAD, POST
independentemente do que o servidor realmente permita.
Todas as solicitações no IIS são tratadas por módulos, as OPTIONSsolicitações são tratadas pelo ProtocolSupportModuleque não é essencial e, como parece bastante idiota.
Se removermos esse módulo, o servidor não responderá mais à solicitação de Opções, que você ainda deseja oferecer suporte, portanto, precisamos usar outro módulo para respondê-las.
Aberto:
%SystemRoot%\System32\inetsrv\config\applicationHost.config
e pesquise o OPTIONSVerbHandlercomentário dessa linha e enquanto estiver nela, também a acima ( TRACEVerbHandler). Agora adicione um novo nó:
<add name="MyOPTIONSVerbHandler" path="*" verb="OPTIONS" modules="StaticFileModule" requireAccess="None" />
o bloco inteiro deve ficar assim:
<!-- <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" />
Agora o staticFileModule processará as OPTIONSsolicitações, mas não retornará nenhum conteúdo.
Se você agora fizer uma OPTIONSsolicitação ao servidor, não receberá Allowum Publiccabeçalho nem um cabeçalho, poderá adicioná-los facilmente no web.config
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Allow" value="GET,POST,HEAD" />
<add name="Public" value="GET,POST,HEAD" />
</customHeaders>
</httpProtocol>
</system.webServer>
agora suas OPTIONSsolicitações funcionam conforme necessário, mas esses cabeçalhos extras também são enviados com solicitações GETou POSTque eu acho que ainda são http válidas.
Se você quiser usar esses cabeçalhos apenas para OPTIONSsolicitações, poderá escrever um módulo http simples que defina esses cabeçalhos e use-o em vez do StaticFileModule que usei acima.