Pengalihan HTTP dari HTTP ke HTTPS Menyebabkan Kegagalan Sambungan
Apabila cuba mengikuti ubah hala dari HTTP ke HTTPS menggunakan HttpURLConnection Java, ia mungkin secara tidak dijangka gagal. Isu ini timbul kerana kaedah followRedirect() HttpURLConnection hanya mengikut ubah hala dalam protokol yang sama.
Dalam kod yang disediakan, permintaan dibuat kepada "http://httpstat.us/301," yang mengembalikan 301 Moved Respons kekal yang menunjukkan ubah hala ke versi HTTPS URL. Walau bagaimanapun, HttpURLConnection tidak mengikut ubah hala ini.
Mengapa ini berlaku? HTTP dan HTTPS dianggap sebagai protokol berasingan oleh spesifikasi protokol HTTP. Walaupun HTTPS sangat mencerminkan HTTP, ia tidak mempunyai pengiktirafan rasmi dalam rangka kerja HTTP. Akibatnya, HttpURLConnection, tanpa konfigurasi tambahan, direka bentuk untuk menganggap HTTPS sebagai protokol yang berbeza atas sebab keselamatan.
Mengikuti ubah hala antara HTTP dan HTTPS tanpa kebenaran pengguna boleh menimbulkan risiko keselamatan. Sebagai contoh, pengesahan pelanggan mungkin didayakan secara automatik untuk sambungan HTTP, tetapi pengguna mungkin berhasrat untuk menyemak imbas tanpa nama. Jika sambungan mengikut ubah hala HTTPS secara automatik, identiti pengguna boleh didedahkan kepada pelayan secara tidak sengaja.
Oleh itu, untuk mengekalkan keselamatan, HttpURLConnection tidak mengikut ubah hala daripada HTTP ke HTTPS secara lalai. Tingkah laku ini tidak boleh dilumpuhkan dan adalah penting untuk mengetahui had ini apabila bekerja dengan ubah hala HTTP dalam program Java.
Atas ialah kandungan terperinci Mengapa HttpURLConnection Java Gagal Mengikuti HTTP ke HTTPS Redirects?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!