สกอตต์มิทเชลล์ให้ในบล็อกโพสต์โซลูชั่นสำหรับการลบส่วนหัวที่ไม่จำเป็น
เป็นแล้วกล่าวว่าที่นี่ในคำตอบอื่น ๆ สำหรับServer
ส่วนหัวมีวิธีการแก้ปัญหาโมดูล httpหรือวิธีการแก้ปัญหา web.config สำหรับ IIS 10+ , หรือคุณสามารถใช้URLRewrite แทนว่ะมัน
โซลูชันที่ใช้งานได้จริงที่สุดสำหรับการตั้งค่าล่าสุด (IIS 10 +) กำลังใช้removeServerHeader
ใน web.config:
<system.webServer>
...
<security>
<requestFiltering removeServerHeader="true" />
</security>
...
</system.webServer>
สำหรับX-AspNet-Version
และX-AspNetMvc-Version
เขาให้วิธีที่ดีกว่าการลบออกในการตอบสนองแต่ละครั้ง: เพียงแค่ไม่สร้างเลย
ใช้enableVersionHeader
สำหรับปิดการใช้งานX-AspNet-Version
ใน web.config
<system.web>
...
<httpRuntime enableVersionHeader="false" />
...
</system.web>
ใช้MvcHandler.DisableMvcResponseHeader
ในเหตุการณ์. Net Application_Start เพื่อปิดการใช้งานX-AspNetMvc-Version
MvcHandler.DisableMvcResponseHeader = true;
และสุดท้ายลบการกำหนดค่า IIS X-Powered-By
ส่วนหัวที่กำหนดเองใน web.config
<system.webServer>
...
<httpProtocol>
<customHeaders>
<remove name="X-Powered-By" />
</customHeaders>
</httpProtocol>
...
</system.webServer>
ระวังถ้าคุณมี ARR (Application Request Routing) มันจะเพิ่มของมันเองด้วยX-Powered-By
ซึ่งจะไม่ถูกลบออกโดยการตั้งค่าส่วนหัวที่กำหนดเอง สิ่งนี้จะต้องถูกลบผ่านตัวจัดการ IIS, การกำหนดค่าตัวแก้ไขบนรูท IIS (ไม่ใช่บนไซต์): ไปที่system.webServer/proxy
โหนดและตั้งค่าarrResponseHeader
เป็นfalse
. หลังจากIISReset
นั้นจะถูกนำมาพิจารณา
(ฉันพบสิ่งนี้ที่นี่ยกเว้นโพสต์นี้เกี่ยวกับวิธีการกำหนดค่า IIS 6.0 แบบเก่า)
อย่าลืมว่าการแก้ปัญหาโดยใช้รหัสแอปพลิเคชันไม่ได้ใช้โดยค่าเริ่มต้นกับส่วนหัวที่สร้างบนเนื้อหาคงที่ (คุณสามารถเปิดใช้งานrunAllManagedModulesForAllRequests
สำหรับการเปลี่ยนแปลงนั้น แต่จะทำให้คำขอทั้งหมดทำงานไปป์ไลน์. Net) ไม่ใช่ปัญหาX-AspNetMvc-Version
เนื่องจากไม่ได้เพิ่มในเนื้อหาคงที่ (อย่างน้อยถ้าคำขอแบบคงที่ไม่ได้รันใน. Net ไปป์ไลน์)
หมายเหตุด้านข้าง: เมื่อจุดมุ่งหมายคือการปิดบังเทคโนโลยีที่ใช้แล้วคุณควรเปลี่ยนชื่อคุกกี้. Net มาตรฐานด้วย ( .ASPXAUTH
หากเปิดใช้งานฟอร์ม auth (ใช้name
แอตทริบิวต์บนforms
แท็กใน web.config) ASP.NET_SessionId
(ใช้<sessionState cookieName="yourName" />
ใน web.config ภายใต้system.web
แท็ก) __RequestVerificationToken
(เปลี่ยน ตามรหัสด้วยAntiForgeryConfig.CookieName
แต่น่าเสียดายที่ใช้ไม่ได้กับอินพุตที่ซ่อนอยู่ที่ระบบนี้สร้างขึ้นใน html))