มีวิธีใหม่ในการเปลี่ยนเส้นทางความพยายามทั้งหมดเพื่อไปยัง HTTP: // เวอร์ชันของไซต์ไปยัง HTTPS: // ที่เทียบเท่าหรือไม่
มีวิธีใหม่ในการเปลี่ยนเส้นทางความพยายามทั้งหมดเพื่อไปยัง HTTP: // เวอร์ชันของไซต์ไปยัง HTTPS: // ที่เทียบเท่าหรือไม่
คำตอบ:
ผมคิดว่าวิธีที่สะอาดเป็นตามที่อธิบายไว้ที่นี่ใน IIS-aid.com เป็น web.config เท่านั้นดังนั้นหากคุณเปลี่ยนเซิร์ฟเวอร์คุณไม่จำเป็นต้องจำขั้นตอนทั้งหมดที่คุณทำผ่านหน้าข้อผิดพลาดที่กำหนดเอง 403.4 หรือการอนุญาตพิเศษอื่น ๆ มันใช้งานได้
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="HTTP to HTTPS redirect" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="off" ignoreCase="true" />
</conditions>
<action type="Redirect" redirectType="Permanent" url="https://{HTTP_HOST}/{R:1}" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
ทางออกที่ง่ายและสะอาดที่สุดที่ฉันพบคือ
ในการตั้งค่า SSL -> ต้องการ SSL
ในหน้าข้อผิดพลาด -> ข้อผิดพลาด 403.4 -> เปลี่ยนเส้นทางไปยังไซต์ HTTPS
ในหน้าข้อผิดพลาด -> แก้ไขการตั้งค่าคุณสมบัติ ... -> ตั้งข้อผิดพลาดโดยละเอียดสำหรับคำขอในท้องถิ่นและหน้าข้อผิดพลาดที่กำหนดเองสำหรับคำขอระยะไกล
ประโยชน์คือมันไม่จำเป็นต้องมีบรรทัดของรหัสเพิ่มเติม ข้อเสียคือมันเปลี่ยนเส้นทางคุณไปสู่ URL ที่แน่นอน
วิธีที่สะอาดจะเปลี่ยนเฉพาะรูปแบบ URL จาก http -> https และทำให้ทุกอย่างเท่าเทียมกัน ควรเป็นฝั่งเซิร์ฟเวอร์เพื่อไม่ให้เกิดปัญหากับเบราว์เซอร์
JPPinto.com มีคำแนะนำทีละขั้นตอนเกี่ยวกับวิธีการทำสิ่งนี้ยกเว้นว่าใช้ javascript (HttpRedirect.htm) แทนการเปลี่ยนเส้นทางฝั่งเซิร์ฟเวอร์ ด้วยเหตุผลบางอย่างฉันไม่สามารถให้ IE รันจาวาสคริปต์ได้หากคุณเปิดใช้งาน 'แสดงข้อความแสดงข้อผิดพลาด HTTP ที่เป็นมิตร' ซึ่งจะเปิดใช้งานตามค่าเริ่มต้น อีกสิ่งหนึ่งที่มีสคริปต์ก็คือการเปลี่ยนเส้นทางไปยังเส้นทางไม่ทำงานแม้ใน FF หรือ Chrome สคริปต์จะเปลี่ยนเส้นทางไปที่รูทเสมอ (บางทีฉันอาจพลาดบางสิ่งบางอย่างเพราะควรเปลี่ยนเส้นทางไปยังเส้นทาง)
ด้วยเหตุผลเหล่านี้ฉันได้ใช้เพจ ASP สำหรับการเปลี่ยนเส้นทาง ข้อเสียคือแน่นอนว่าต้องใช้ ASP คลาสสิกเพื่อเปิดใช้งานบนเซิร์ฟเวอร์
OpsanBlog มีสคริปต์ ASP และคำแนะนำที่ทำงานได้ดีกับ IIS6
ฉันมีปัญหาเล็กน้อยโดยใช้วิธีนี้กับ IIS7 ปัญหาส่วนติดต่อผู้ใช้ส่วนใหญ่เนื่องจาก IIS7 ทำให้ง่ายต่อการพลาด
ตัวจัดการ IIS ควรแสดงชื่อไฟล์ในส่วนหัว
Global.asax
protected void Application_BeginRequest()
{
if (!Context.Request.Url.AbsoluteUri.Contains("localhost") && !Context.Request.IsSecureConnection)
Response.Redirect(Context.Request.Url.ToString().Replace("http:", "https:"));
}
ฉันใช้ classic asp (อินทราเน็ต) และบนหน้าเว็บที่ต้องเข้าสู่ระบบไฟล์เข้าสู่ระบบรวมถึงการเปลี่ยนเส้นทาง:
if Request.ServerVariables("SERVER_PORT_SECURE") <> "1" or Request.ServerVariables("HTTPS") <> "on" then
Response.Redirect "https://" & Request.ServerVariables("SERVER_NAME") & Request.ServerVariables("URL")
end if
หลักสูตรนี้ไม่รวมข้อมูล GET หรือ POST ดังนั้นด้วยเหตุนี้จึงเป็นการเปลี่ยนเส้นทางไปยังหน้าที่ปลอดภัยของคุณ