Question interessante. Toutes les méthodes à supprimer response headersd'IIS ne semblent pas fonctionner pour les en Allow- Publictêtes et , une OPTIONSdemande 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 OPTIONSdemandes sont gérées par le ProtocolSupportModulequi 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 OPTIONSVerbHandlercommentaire 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 OPTIONSdemandes mais ne retournera aucun contenu.
Si vous faites maintenant une OPTIONSdemande au serveur, vous n'obtiendrez Allowni un en- Publictê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 OPTIONSdemandes fonctionnent comme requis, mais ces en-têtes supplémentaires sont également envoyés avec n'importe quelle GETou des POSTdemandes qui, je pense, sont toujours valides http.
Si vous souhaitez uniquement utiliser ces en-têtes pour les OPTIONSdemandes, 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.