HttpURLConnection Redirects: Protocol Restrictions
Java's HttpURLConnection menyediakan cara yang mudah untuk menghantar permintaan HTTP, tetapi apabila berurusan dengan ubah hala, ia mematuhi tertentu peraturan. Satu peraturan sedemikian ialah ubah hala diikuti hanya jika URL destinasi menggunakan protokol yang sama seperti permintaan asal.
Dalam contoh yang diberikan, URL asal ialah URL HTTP ("http://httpstat.us/ 301") dan URL ubah hala ialah URL HTTPS ("https://httpstat.us"). HttpURLConnection tidak mengikut ubah hala ini kerana HTTPS dianggap sebagai protokol yang berbeza daripada HTTP. Tingkah laku ini dikodkan keras dalam kaedah followRedirect(), tidak menyediakan cara untuk melumpuhkan semakan ini.
Sekatan protokol ini berpunca daripada kebimbangan keselamatan. Walaupun HTTPS sering dianggap sebagai alternatif selamat kepada HTTP, dari perspektif protokol HTTP, HTTPS dianggap sebagai protokol yang berasingan dan tidak dikenali. Membenarkan ubah hala yang tidak disahkan ke HTTPS akan memperkenalkan potensi risiko. Contohnya, jika pengesahan pelanggan automatik dikonfigurasikan dan permintaan awal adalah berasaskan HTTP, identiti pelanggan boleh didedahkan kepada pelayan secara tidak sengaja jika ubah hala ke HTTPS diikuti secara membuta tuli.
Atas ialah kandungan terperinci Mengapa HttpURLConnection Java Tidak Mengikut Lencongan Antara HTTP dan HTTPS?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!