Pertanyaan menarik. Semua metode untuk menghapus response headers
dari IIS sepertinya tidak berfungsi untuk Allow
dan Public
header, OPTIONS
permintaan selalu kembali:
Allow: OPTIONS, TRACE, GET, HEAD, POST
Public: OPTIONS, TRACE, GET, HEAD, POST
terlepas dari apa server sebenarnya memungkinkan.
Semua permintaan dalam IIS ditangani oleh modul, OPTIONS
permintaan ditangani oleh ProtocolSupportModule
yang tidak penting dan sepertinya cukup bodoh.
Jika kami menghapus modul itu, server tidak menanggapi permintaan Opsi lagi, yang masih ingin Anda dukung, jadi kami harus menggunakan modul lain untuk menjawabnya.
Buka:
%SystemRoot%\System32\inetsrv\config\applicationHost.config
dan cari OPTIONSVerbHandler
komentar di baris itu dan saat Anda melakukannya, baris di atas ( TRACEVerbHandler
) juga. Sekarang tambahkan node baru:
<add name="MyOPTIONSVerbHandler" path="*" verb="OPTIONS" modules="StaticFileModule" requireAccess="None" />
seluruh blok akan terlihat seperti ini:
<!-- <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" />
Sekarang staticFileModule akan memproses OPTIONS
permintaan tetapi tidak akan mengembalikan konten apa pun.
Jika sekarang Anda membuat OPTIONS
permintaan ke server, Anda tidak akan mendapatkan header Allow
atau pun tidak Public
, Anda dapat menambahkannya dengan mudah di web.config
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Allow" value="GET,POST,HEAD" />
<add name="Public" value="GET,POST,HEAD" />
</customHeaders>
</httpProtocol>
</system.webServer>
sekarang OPTIONS
permintaan Anda berfungsi seperti yang diminta, tetapi tajuk tambahan itu juga dikirim dengan salah satu GET
atau POST
permintaan yang menurut saya masih berlaku http.
Jika Anda hanya ingin menggunakan header itu untuk OPTIONS
permintaan, Anda bisa menulis modul http sederhana yang menetapkan header ini dan menggunakannya sebagai pengganti StaticFileModule yang saya gunakan di atas.