Rumah > Java > javaTutorial > Mengapa HttpURLConnection Java Tidak Mengikuti HTTP ke HTTPS Redirects secara Lalai?

Mengapa HttpURLConnection Java Tidak Mengikuti HTTP ke HTTPS Redirects secara Lalai?

Patricia Arquette
Lepaskan: 2024-12-01 13:05:11
asal
794 orang telah melayarinya

Why Doesn't Java's HttpURLConnection Follow HTTP to HTTPS Redirects by Default?

Isu Pengalihan Selamat dengan HTTPURLConnection

Di Java, HttpURLConnection menghadapi kesukaran apabila mengikuti ubah hala HTTP yang beralih daripada HTTP ke URL HTTPS. Tingkah laku ini, yang diperhatikan dalam senario tertentu, telah mengelirukan pembangun yang ingin memahami punca asas.

Untuk menggambarkan masalah, pertimbangkan coretan kod berikut:

import java.net.URL;
import java.net.HttpURLConnection;
import java.io.InputStream;

public class Tester {

    public static void main(String argv[]) throws Exception{
        InputStream is = null;

        try {
            String httpUrl = "http://httpstat.us/301";
            URL resourceUrl = new URL(httpUrl);
            HttpURLConnection conn = (HttpURLConnection)resourceUrl.openConnection();
            conn.setConnectTimeout(15000);
            conn.setReadTimeout(15000);
            conn.connect();
            is = conn.getInputStream();
            System.out.println("Original URL: "+httpUrl);
            System.out.println("Connected to: "+conn.getURL());
            System.out.println("HTTP response code received: "+conn.getResponseCode());
            System.out.println("HTTP response message received: "+conn.getResponseMessage());
       } finally {
            if (is != null) is.close();
        }
    }
}
Salin selepas log masuk

Apabila menjalankan program ini dengan URL awal ditetapkan kepada "http://httpstat.us/301," output mendedahkan bahawa HttpURLConnection Java tidak mengikuti ubah hala ke "https://httpstat.us."

Memahami Tingkah Laku

Penjelasan untuk tingkah laku ini terletak pada cara Java mengendalikan ubah hala. Secara lalai, ubah hala diikuti hanya jika mereka menggunakan protokol yang sama. Sekatan ini dilaksanakan dalam kaedah followRedirect().

Adalah penting untuk ambil perhatian bahawa HTTPS, sambil meniru HTTP, dianggap sebagai protokol yang berbeza daripada HTTP dari perspektif protokol. Akibatnya, Java memerlukan kelulusan pengguna untuk mengikuti ubah hala dari HTTP ke HTTPS. Langkah berjaga-jaga ini perlu untuk melindungi daripada kemungkinan kebimbangan keselamatan.

Sebagai contoh, jika pelanggan dikonfigurasikan untuk pengesahan pelanggan automatik semasa menggunakan HTTP untuk penyemakan imbas tanpa nama, berikutan ubah hala HTTPS tanpa persetujuan pengguna yang jelas akan mendedahkan identiti pelanggan kepada pelayan.

Atas ialah kandungan terperinci Mengapa HttpURLConnection Java Tidak Mengikuti HTTP ke HTTPS Redirects secara Lalai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan