Referer diteruskan dari HTTPS ke HTTP dalam beberapa kasus ... Bagaimana?

17

Secara teori browser tidak meneruskan informasi referensi dari HTTPS ke situs HTTP. Dan dalam pengalaman saya ini selalu benar. Tapi saya baru saja menemukan pengecualian, dan saya ingin mengerti mengapa ini berhasil sehingga saya dapat menggunakannya juga.

Telusuri "apa rujukan saya" di https://www.google.ca/
misalnya: https://www.google.ca/search?q=what+is+my+referer

Ada beberapa situs yang akan menunjukkan referer. Mereka semua tampaknya "bekerja" padahal seharusnya tidak. Misalnya, klik satu www.whatismyreferer.com. Saya mendapat:

 Your referer:
 https://www.google.ca/

Perhatikan bahwa kadang-kadang, jarang, saya mendapat "no referer" sebagai hasilnya. Kembali dan klik lagi tautannya dan itu akan "bekerja" lain kali.

Ini seharusnya tidak terjadi. www.whatismyreferer.com adalah situs non-HTTPS. Header referer tidak boleh diteruskan, tapi itu benar.

Apa yang terjadi di sini, dan bagaimana saya bisa melakukan hal yang sama dari situs HTTPS saya ke situs HTTP yang saya tautkan?

ravisorg
sumber
1
Saya harus mencatat bahwa saya menggunakan Chrome di Windows, jika itu membuat perbedaan (misalnya: jika orang lain melihat hasil yang berbeda di browser / OS yang berbeda)
ravisorg
Perilaku ini tidak benar lagi.
Flimm
@ravisorg, bukankah seharusnya ini diposting di S / O saja?
Pacerier
Google sekarang mengembalikan tautan HTTPS, sehingga tes tidak lagi valid :-(
Silas S. Brown

Jawaban:

4

Ini adalah perilaku standar.

https://tools.ietf.org/html/rfc2616#s-15-15.3 kata

Klien TIDAK HARUS menyertakan bidang header Perujuk dalam permintaan HTTP (tidak aman) jika halaman referensi ditransfer dengan protokol aman.

jadi jika klien Anda melakukan itu, itu melanggar standar.

sekali lagi, Google ADALAH standar, dan mereka dapat melakukan apa pun yang mereka inginkan :-)

johnshen64
sumber
1
"Haruskah" berarti opsional, kan?
Pacerier
ya, saya pikir begitu, opsional.
johnshen64
4
Karena ini opsional, Mengapa Anda mengatakan itu melanggar standar?
Pacerier
1
Sekarang 2616 sudah usang. 7231 Bagian 5.5.2 mengatakan "Agen pengguna TIDAK HARUS mengirim bidang tajuk Referer dalam permintaan HTTP tanpa jaminan jika halaman referensi diterima dengan protokol aman." Itu tidak menentukan apa yang seharusnya dilakukan agen untuk permintaan HTTP aman.
Peter
1

Tampaknya ini adalah sesuatu yang dilakukan javascript di halaman google. Saya tidak melihatnya di firefox dengan noscript diaktifkan dan berhenti melihatnya di Chrome di Windows jika saya menonaktifkan javascript. Saya tidak tahu secara spesifik karena saya belum menggali lebih dalam dari itu.

Etan Reisner
sumber
Tidak, ini tidak terkait dengan javascript (Saya memikirkannya dan memeriksanya sebelum bertanya). Sepertinya ini adalah tag <meta> baru yang diikuti Chrome.
ravisorg
Menonaktifkan javascript secara andal mencegah pengarah bekerja di sini. Saya tidak tahu Mungkin ada lebih dari satu hal yang terlibat di sini.
Etan Reisner
Itu sangat menarik - saya akan lebih banyak bereksperimen dengan itu. Terima kasih untuk umpan baliknya!
ravisorg
0

<meta> Nama atribut Label memiliki aturan pengarah baru, Pengarah yang mengontrol konten HTTP Referer HTTP header yang dilampirkan pada setiap permintaan yang dikirim dari dokumen ini.

Untuk informasi lebih lanjut, silakan cek di sini: Kebijakan Perujuk RFC

leozhang2018
sumber
Ini sama dengan jawaban yang sudah diterima ?!
DocRoot
-2

Itu karena ketika Anda mengklik tautan, Anda akan diarahkan dari https://www.google .... ke http://www.google ... maka Anda diarahkan ke www.whatismyreferer.com

Dan seperti yang Anda katakan, antara situs web http referer ditransmisikan.

Anda dapat memeriksanya dengan ekstensi Firefox

pengguna2299634
sumber
2
Apakah Anda menebak, atau mendasarkannya pada fakta? Karena saya tidak melihat itu terjadi pada saya. Mengklik tautan mengirim Anda ke pengalihan HTTPS di google.ca dan kemudian ke domain akhir. Saya tidak pernah menekan URL non-https hingga saya mencapai (mis.) Www.whatismyreferer.com. Perhatikan juga perujuk yang secara spesifik menyatakan httpS://www.google.ca , bukan http.
ravisorg
Ya, jawaban ini tampaknya salah.
ceejayoz
Berikut ini adalah pembuangan dari header http: pastebin.com/Y1HJyJ87 Saya baru saja menghapus unduhan sumber daya (seperti google sarankan & hal-hal ajax lainnya) dan data terkait cookie. Tetapi saya harus mengakui bahwa ketika saya mencoba beberapa kali, google berperilaku berbeda ... Kadang-kadang hanya menggunakan https, karena itu tidak mengizinkan situs web untuk menunjukkan kepada saya referer saya. Coba saja sendiri
user2299634