Question interessante. Toutes les méthodes à supprimer response headers
d'IIS ne semblent pas fonctionner pour les en Allow
- Public
têtes et , une OPTIONS
demande renvoie toujours:
Allow: OPTIONS, TRACE, GET, HEAD, POST
Public: OPTIONS, TRACE, GET, HEAD, POST
indépendamment de ce que le serveur autorise réellement.
Toutes les demandes dans IIS sont gérées par des modules, les OPTIONS
demandes sont gérées par le ProtocolSupportModule
qui n'est pas essentiel et comme cela semble assez stupide.
Si nous supprimons ce module, le serveur ne répond plus à la demande d'options, que vous souhaitez toujours prendre en charge, nous devons donc utiliser un autre module pour y répondre.
Ouvert:
%SystemRoot%\System32\inetsrv\config\applicationHost.config
et recherchez un OPTIONSVerbHandler
commentaire sur cette ligne et pendant que vous y êtes, celle ci-dessus ( TRACEVerbHandler
) aussi. Ajoutez maintenant un nouveau nœud:
<add name="MyOPTIONSVerbHandler" path="*" verb="OPTIONS" modules="StaticFileModule" requireAccess="None" />
le bloc entier devrait ressembler à ceci:
<!-- <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" />
Maintenant, le staticFileModule traitera les OPTIONS
demandes mais ne retournera aucun contenu.
Si vous faites maintenant une OPTIONS
demande au serveur, vous n'obtiendrez Allow
ni un en- Public
tête, vous pouvez les ajouter facilement dans web.config
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Allow" value="GET,POST,HEAD" />
<add name="Public" value="GET,POST,HEAD" />
</customHeaders>
</httpProtocol>
</system.webServer>
maintenant vos OPTIONS
demandes fonctionnent comme requis, mais ces en-têtes supplémentaires sont également envoyés avec n'importe quelle GET
ou des POST
demandes qui, je pense, sont toujours valides http.
Si vous souhaitez uniquement utiliser ces en-têtes pour les OPTIONS
demandes, vous pouvez écrire un module http simple qui définit ces en-têtes et l'utiliser à la place du StaticFileModule que j'ai utilisé ci-dessus.