Apakah ada cara bersih untuk mengalihkan semua upaya ke HTTP: // versi situs ke HTTPS: // yang setara?
Apakah ada cara bersih untuk mengalihkan semua upaya ke HTTP: // versi situs ke HTTPS: // yang setara?
Jawaban:
Saya pikir cara terbersih adalah seperti yang dijelaskan di sini di IIS-aid.com . Ini web.config saja dan jadi jika Anda mengubah server Anda tidak harus mengingat semua langkah yang Anda lalui dengan halaman kesalahan 403.4 kustom atau izin khusus lainnya, itu hanya berfungsi.
<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>
Solusi paling mudah dan bersih yang saya temukan adalah
Dalam Pengaturan SSL -> memerlukan SSL
Di Halaman Kesalahan -> Pada kesalahan 403,4 -> Redirect ke situs HTTPS
Di Halaman Kesalahan -> Edit Pengaturan Fitur ... -> Setel kesalahan terperinci untuk permintaan lokal dan halaman kesalahan khusus untuk permintaan jarak jauh
Keuntungannya adalah tidak memerlukan baris kode tambahan. Kekurangannya adalah itu mengarahkan Anda ke url absolut.
Cara yang bersih hanya mengubah skema URL dari http -> https dan membiarkan semuanya setara. Itu harus sisi server sehingga tidak ada masalah browser.
JPPinto.com memiliki petunjuk Langkah-demi-Langkah tentang bagaimana hal ini dilakukan, kecuali bahwa mereka menggunakan javascript (HttpRedirect.htm) alih-alih pengalihan sisi server. Untuk beberapa alasan, saya tidak bisa membuat IE menjalankan javascript jika Anda mengaktifkan 'Tampilkan pesan kesalahan HTTP ramah', yang diaktifkan secara default. Hal lain dengan skrip adalah pengalihan ke jalur tidak berfungsi bahkan di FF atau Chrome. Script selalu dialihkan ke root. (Mungkin saya telah melewatkan sesuatu, karena itu harus diarahkan ke jalan.)
Untuk alasan ini saya telah menggunakan halaman ASP untuk pengalihan. Kelemahannya tentu saja ini membutuhkan ASP klasik untuk diaktifkan di server.
OpsanBlog memiliki skrip ASP dan instruksi yang berfungsi baik dengan IIS6.
Saya punya beberapa masalah menggunakan metode ini dengan IIS7. Masalah antarmuka pengguna sebagian besar, karena IIS7 membuatnya sangat mudah untuk melewatkan sesuatu.
Manajer IIS harus menunjukkan nama file di header.
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:"));
}
Saya menggunakan asp klasik (intranet) dan pada halaman yang memerlukan login log file sertakan melakukan pengalihan:
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
Ini tentu saja tidak termasuk data GET atau POST. Jadi sebenarnya ini adalah pengalihan bersih ke halaman aman Anda.