Interessante Frage. Alle Methoden zum Entfernen response headers
aus IIS scheinen für die Header Allow
und nicht zu funktionieren. Public
Eine OPTIONS
Anforderung gibt immer Folgendes zurück:
Allow: OPTIONS, TRACE, GET, HEAD, POST
Public: OPTIONS, TRACE, GET, HEAD, POST
unabhängig davon, was der Server tatsächlich zulässt.
Alle Anforderungen in IIS werden von Modulen verarbeitet, die OPTIONS
Anforderungen werden von den Modulen verarbeitet, ProtocolSupportModule
was nicht unbedingt erforderlich ist und wie es ziemlich dumm erscheint.
Wenn wir dieses Modul entfernen, antwortet der Server nicht mehr auf die Optionsanforderung, die Sie weiterhin unterstützen möchten. Daher müssen wir ein anderes Modul verwenden, um diese zu beantworten.
Öffnen:
%SystemRoot%\System32\inetsrv\config\applicationHost.config
und suche nach OPTIONSVerbHandler
Kommentaren in dieser Zeile und während du dabei bist, auch in der obigen ( TRACEVerbHandler
). Fügen Sie nun einen neuen Knoten hinzu:
<add name="MyOPTIONSVerbHandler" path="*" verb="OPTIONS" modules="StaticFileModule" requireAccess="None" />
Der ganze Block sollte so aussehen:
<!-- <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" />
Jetzt verarbeitet das staticFileModule die OPTIONS
Anforderungen, gibt jedoch keinen Inhalt zurück.
Wenn Sie jetzt eine OPTIONS
Anfrage an den Server stellen, erhalten Sie Allow
weder einen noch einen Public
Header. Sie können diese einfach in web.config hinzufügen
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Allow" value="GET,POST,HEAD" />
<add name="Public" value="GET,POST,HEAD" />
</customHeaders>
</httpProtocol>
</system.webServer>
jetzt Ihre OPTIONS
Anfragen nach Bedarf arbeiten, aber diese zusätzlichen Header werden auch mit jedem gesendeten GET
oder POST
Anfragen , die ich denke immer noch gültig http ist.
Wenn Sie diese Header nur für OPTIONS
Anforderungen verwenden möchten, können Sie ein einfaches http-Modul schreiben, das diese Header festlegt, und es anstelle des oben verwendeten StaticFileModule verwenden.