Bagaimana saya bisa meneruskan tajuk pengarah dari domain https saya ke domain http?

12

Situs web saya adalah 100% https. Saya memiliki tautan ke domain http lainnya. Header pengarah tidak disetel saat menautkan dari halaman https ke halaman http. Dari http://en.wikipedia.org/wiki/HTTP_referrer

Jika situs web diakses dari koneksi HTTP Secure (HTTPS) dan tautan menunjuk ke mana saja kecuali lokasi aman lainnya, maka bidang rujukan tidak dikirim.

Saya lebih suka bahwa domain lain dapat melihat pengarah sehingga mereka tahu bahwa lalu lintas berasal dari domain saya. Apakah ada cara untuk memaksa tajuk ini atau ada solusi lain?

Memperbarui

Saya telah melakukan beberapa pengujian dasar menggunakan pengalihan:

http page  -- link to http  --> 301 redirect --> http page = referrer intact
https page -- link to https --> 301 redirect --> http page = referrer blank
https page -- link to http  --> 301 redirect --> http page = referrer blank
https page -- link to http  --> 302 redirect --> http page = referrer blank

Pengarah hilang saat menautkan dari halaman https ke halaman pengalihan http di domain saya sendiri. Jadi tidak ada referer pada redirect.

alat pemecah buah keras
sumber
The Originharus utuh, mungkin tidak cocok kasus penggunaan Anda sekalipun.
Pacerier

Jawaban:

8

Saya juga punya masalah yang sama. Saya menyelesaikannya dengan menambahkan tag meta seperti di bawah ini dan hanya akan berfungsi di Chrome dan Safari.

<meta name="Referrer" content="origin">
Mahendran Sakkarai
sumber
6

Sayangnya Anda tidak dapat mereferensikan HTTPS ke situs menggunakan HTTP. Namun Anda dapat melakukan HTTPS ke HTTPS atau HTTP ke HTTPS.

SUMBER

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

Cara mengatasinya adalah dengan menggunakan skrip pengalihan internal yang alih-alih mengarahkan penghubung ke pengunjung di HTTPS yang Anda redirect ke HTTP dan kemudian diarahkan kembali.

Sebagai contoh:

<a href="http://www.yours.com/out.php?www.other.com">www.outboundsite.com</a> tetapi ini tidak akan menggunakan pengarah asli.

Kemungkinan lain adalah menggunakan trackback daripada rujukan dan sejauh yang saya tahu ini berfungsi di HTTPS.

Simon Hayter
sumber
Pengujian saya menunjukkan bahwa menggunakan pengalihan tidak berfungsi (lihat pembaruan).
nutcracker
Gunakan trackback atau kehilangan HTTPS;)
Simon Hayter
1
@bybe, Jawaban ini perlu diedit. Lihat serverfault.com/a/520603/87017 dan webmaster.stackexchange.com/a/71331/7654
Pacerier
4

Saya dapat mengatur tautan dari halaman HTTPS ke halaman HTTP di domain lain dan masih meneruskan URL halaman pertama sebagai pengarah menggunakan teknik berikut.

Definisi

Halaman asal : Halaman HTTPS tempat tautan ke halaman tujuan yang di-host HTTP berada. Dalam contoh ini:https://example1.com/origin.html

Halaman tujuan : Halaman HTTP yang memiliki akses ke pengarah halaman asal. Dalam contoh ini:http://example2.com/destination.html

Rencana dasar

Ini memiliki efek membuat pengalihan berasal dari versi HTTP dari halaman asal:

  1. Tautan pada HTTPS halaman asal tautan ke halaman saat ini tetapi menambahkan parameter permintaan untuk halaman tujuan [1]. misalnya:https://example1.com/origin.html?goto=http://example2.com/destination.html

  2. Ketika tautan diklik, server di example1.com menginterupsi permintaan standar ketika parameter kueri 'goto' hadir. Kemudian:

    • Menyimpan parameter 'goto' dalam cookie 'goto'.
    • Menghapus parameter dan nilai 'goto' dari url permintaan saat ini
    • 302 pengalihan ke url baru yang telah dibersihkan ini pada versi HTTP dari domain asal yaitu. http://example1.com/origin.html
  3. Server memeriksa setiap permintaan untuk cookie 'goto' dan jika ada akan menghapus cookie dan kemudian membuat halaman pengalihan yang sangat sederhana. Halaman ini berisi [2]:

    • Skrip Javascript window.location.replace () yang mengalihkan ke url cookie goto.
    • Tag Meta Refresh dengan nilai url cookie goto dan penundaan beberapa detik.
    • Tautan ke url cookie goto.

Catatan

[1] Solusi dasar ini adalah redirector terbuka dan beberapa pertimbangan harus diberikan untuk melindungi orang jahat menggunakan parameter kueri goto untuk mengarahkan ulang UA dalam serangan phishing.

[2] Tidak semua browser akan mengirim pengarah saat mengarahkan melalui redirect JS atau tag meta refresh. Dalam pengujian saya IE8 dan lebih rendah tidak lulus pengarah.

Saya tidak yakin apakah teknik ini akan memungkinkan crawler mesin pencari untuk mengikuti tautan. Ini tidak penting untuk persyaratan saya.

Jika UA memiliki cookie yang dinonaktifkan maka ini hanya akan mengarahkan kembali ke halaman asal.

Mengizinkan koneksi HTTP hanya untuk pengalihan

Di server saya, saya memiliki aturan Apache untuk menegakkan HTTPS terlepas dari permintaan:

<VirtualHost *:80>
    ServerName example1.com

    # if not on port 443 then 301 redirect to https while keeping any query string
    RewriteEngine              On
    RewriteCond %{HTTP_HOST}  ^example1\.com$ [NC]
    RewriteCond     %{SERVER_PORT} !443
    RewriteRule     ^(.*)$     https://%{HTTP_HOST}$1 [L,QSA,R=301]

Agar teknik pengalihan di atas berfungsi, saya perlu beberapa cara untuk mengizinkan koneksi HTTP secara kondisional. Ada banyak cara untuk melakukan ini. Saya memutuskan cookie akan bekerja.

<VirtualHost *:80>
    ServerName example1.com

    # if not on port 443 then 301 redirect to https while keeping any query string
    RewriteEngine              On
    RewriteCond %{HTTP_HOST}  ^example1\.com$ [NC]
    RewriteCond     %{SERVER_PORT} !443
    RewriteCond %{HTTP_COOKIE}  !disable_ssl [NC]
    RewriteRule     ^(.*)$     https://%{HTTP_HOST}$1 [L,QSA,R=301]

Cookie disable_ssl akan ditetapkan di langkah 2 dan kemudian dihapus di langkah 3.

alat pemecah buah keras
sumber
Oke .... tapi ini tidak persis melewati " header pengarah ".
Pacerier
0

Sepertinya yang Anda inginkan tidak mungkin, jadi solusinya mungkin; jika situs target menggunakan Google Analytics (atau program yang kompatibel, saya yakin Piwik menggunakan sintaksis yang sama, dan paket statistik lainnya akan mengabaikan hal ini) Anda dapat mengirim params pelacakan, misalnya di tautan Anda ke example.com

http://www.example.com/?utm_campaign=spring&utm_medium=referral&utm_source=exampleblog

ini akan muncul di GA mereka dengan perincian, pastikan untuk memilih nilai yang kemungkinan tidak akan digunakan orang lain sehingga Anda tidak memaksa mereka ke dalam konflik / atau menyembunyikan lalu lintas Anda di belakang orang lain

Google melakukan pembuat url yang berguna di sini http://support.google.com/analytics/answer/1033867?hl=id

Perbarui - ulang: etiket

Tanpa mengetahui lebih lanjut tentang sifat lalu lintas, saya hanya dapat berbicara secara umum / pribadi ...

Etiket akan selalu berada di mata yang melihatnya. Tanpa ini saya pikir di GA setidaknya itu akan muncul sebagai langsung, atau mungkin (tidak ada set) yang akan condong angka mereka agar terlihat seperti merek mereka lebih besar dari itu. Secara pribadi saya lebih suka kampanye yang dipilih dengan hati-hati jadi saya tahu dari mana datangnya lalu lintas.

Anda juga dapat melihatnya sebagai, jika Anda hampir tidak mengirim mereka traffic, mereka mungkin tidak akan memperhatikan, jika Anda mengirim mereka banyak maka mereka mungkin tidak akan mengeluh! Jika mereka melakukannya, maka Anda biasanya dapat menemukan orang lain untuk memberikan traffic gratis ke!

dan jika Anda sangat spesifik, itu seharusnya tidak menyebabkan masalah; kampanye sebagai nama situs Anda dan sumber sebagai bagian dari situs Anda mungkin?

http://www.example.com/?utm_campaign=mygreatsite.com&utm_medium=referral&utm_source=specialoffers
CodeMonkey
sumber
Ide bagus! Saya telah memikirkan solusi ini tetapi bertanya-tanya apakah mereka adalah "aturan" di sekitar penerapan ini dari saya. Biasanya parameter kueri ini ditambahkan oleh situs web pihak ketiga sehingga mereka dapat melacak kampanye mereka dll. Apakah pendekatan ini dianggap praktik buruk dengan cara apa pun?
nutcracker