Interesante pregunta. Todos los métodos para eliminar response headersde IIS no parecen funcionar para los encabezados Allowy Public, OPTIONSsiempre se devuelve una solicitud:
Allow: OPTIONS, TRACE, GET, HEAD, POST
Public: OPTIONS, TRACE, GET, HEAD, POST
independientemente de lo que el servidor realmente permita.
Todas las solicitudes en IIS son manejadas por módulos, las OPTIONSsolicitudes son manejadas por lo ProtocolSupportModuleque no es esencial y, como parece bastante tonto.
Si eliminamos ese módulo, el servidor ya no responde a la solicitud de Opciones, que aún desea admitir, por lo que tenemos que usar otro módulo para responderlas.
Abierto:
%SystemRoot%\System32\inetsrv\config\applicationHost.config
y busca OPTIONSVerbHandlercomentar esa línea y mientras estás en ella la de arriba ( TRACEVerbHandler) también. Ahora agregue un nuevo nodo:
<add name="MyOPTIONSVerbHandler" path="*" verb="OPTIONS" modules="StaticFileModule" requireAccess="None" />
todo el bloque debería verse así:
<!-- <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" />
Ahora el staticFileModule procesará las OPTIONSsolicitudes pero no devolverá ningún contenido.
Si ahora realiza una OPTIONSsolicitud al servidor, no obtendrá Allowni un Publicencabezado, puede agregarlos fácilmente en web.config
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Allow" value="GET,POST,HEAD" />
<add name="Public" value="GET,POST,HEAD" />
</customHeaders>
</httpProtocol>
</system.webServer>
ahora sus OPTIONSsolicitudes funcionan según lo requerido, pero esos encabezados adicionales también se envían con cualquiera GETo POSTsolicitudes que creo que aún son válidas http.
Si solo desea usar esos encabezados para las OPTIONSsolicitudes, puede escribir un módulo http simple que establezca estos encabezados y usarlo en lugar del StaticFileModule que utilicé anteriormente.