สกอตต์มิทเชลล์ให้ในบล็อกโพสต์โซลูชั่นสำหรับการลบส่วนหัวที่ไม่จำเป็น
เป็นแล้วกล่าวว่าที่นี่ในคำตอบอื่น ๆ สำหรับ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))