Interesante pregunta. Todos los métodos para eliminar response headers
de IIS no parecen funcionar para los encabezados Allow
y Public
, OPTIONS
siempre 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 OPTIONS
solicitudes son manejadas por lo ProtocolSupportModule
que 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 OPTIONSVerbHandler
comentar 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 OPTIONS
solicitudes pero no devolverá ningún contenido.
Si ahora realiza una OPTIONS
solicitud al servidor, no obtendrá Allow
ni un Public
encabezado, 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 OPTIONS
solicitudes funcionan según lo requerido, pero esos encabezados adicionales también se envían con cualquiera GET
o POST
solicitudes que creo que aún son válidas http.
Si solo desea usar esos encabezados para las OPTIONS
solicitudes, puede escribir un módulo http simple que establezca estos encabezados y usarlo en lugar del StaticFileModule que utilicé anteriormente.