Apa konsekuensi untuk menggunakan Header Lokasi Relatif?

17

Menurut spesifikasi , header Lokasi yang digunakan dalam pengalihan memerlukan nama server

HTTP/1.1 301 Moved Permanently
...
Location: http://example.com/foo/baz/bar

Namun, pada 2012, sebagian besar browser web akan mengenali jalur relatif dan mengarahkan Anda ke lokasi baru menggunakan nama server asli

HTTP/1.1 301 Moved Permanently
...
Location: /foo/baz/bar

Apakah ada konsekuensi negatif / mengejutkan dengan menggunakan URL relatif di header Lokasi? Perhatian khusus saya adalah bagaimana Google / mesin pencari akan menafsirkan ini, tetapi jika ada hal lain yang saya tidak pikirkan, saya akan senang mendengarnya.

Alan Storm
sumber
Bisakah Anda mengutip bit persisnya dari mana Anda mendapatkan persyaratan itu? Tidak menantang, saya hanya tidak langsung melihatnya dan tidak merasa ingin membaca seluruh RFC untuk menemukannya. Juga, Anda mengutip spec HTTP 1.0 tetapi menggunakan header HTTP 1.1 dalam contoh Anda. (Yang mungkin atau mungkin tidak mengubah konten yang diizinkan.)
Su '
Bagian 10.11. tools.ietf.org/html/rfc1945#halaman-44 Juga tidak ada, setahu saya, dalam spesifikasi 1.1 yang "memperbaiki" ini.
Alan Storm

Jawaban:

15

Menurut versi standar HTTP / 1.1 saat ini, RFC 2616, nilai Locationheader harus merupakan URI absolut .

Namun, dalam rancangan standar yang disiapkan oleh Kelompok Kerja HTTPbis untuk akhirnya menggantikan RFC 2616, ini telah diubah untuk memungkinkan URI relatif juga, tampaknya karena :

"Definisi header Lokasi [dalam RFC 2616] berbeda dalam berbagai cara tentang bagaimana setidaknya browser Web perlu berurusan dengan mereka untuk beroperasi dengan konten di Web"

Dalam praktiknya, AFAIK hampir semua peramban dan mesin pencari utama memahami dan menerima pengalihan HTTP ke URL relatif. Namun, sampai rancangan HTTPbis suatu hari menjadi standar resmi dan diadopsi secara luas, akan selalu ada beberapa agen pengguna baru atau tidak jelas yang menerapkan standar saat ini untuk surat dan hanya menerima URL absolut. Jadi, hal yang aman untuk dilakukan, untuk saat ini, adalah dengan hanya menggunakan URL absolut dalam Locationtajuk, seperti yang disarankan oleh hukum Postel :

"Jadilah konservatif dalam apa yang kamu kirim, liberal dalam apa yang kamu terima."

Ilmari Karonen
sumber
3
RFC 2616 kini telah usang oleh 7231, yang memungkinkan URL relatif di header Lokasi. Agen pengguna yang menerapkan standar pada surat itu akan menerima URL relatif sekarang
ZoFreX
6

Bagian 14.30 dari HTTP 1.1 RFC http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.30 tidak berbeda secara signifikan. Saya tidak tahu bahwa Anda akan melihat batasan praktis sebenarnya untuk ini.

Satu-satunya waktu saya telah melihat bahkan peringatan tentang masalah ini adalah ketika saya digunakan untuk menguji di Lynx dan lokasi itu tidak mutlak itu akan memperingatkan Anda "Nilai lokasi tidak mutlak" - tetapi jika saya ingat benar itu masih akan membiarkan Anda pergi ke lokasi baru. Saya baru saja menguji Lynx 2.8.7 dan tampaknya tidak melakukan itu lagi, meskipun itu mungkin masalah konfigurasi.

Sekarang, Anda berkata:

Perhatian khusus saya adalah bagaimana Google / mesin pencari akan menafsirkan ini, tetapi jika ada hal lain yang saya tidak pikirkan, saya akan senang mendengarnya.

Saya percaya bahwa ini memerlukan ujian. Saya akan menyiapkan url, meletakkannya di sitemap xml situs Anda , dan minta url tersebut menjadi redirect seperti yang Anda jelaskan. Saya pikir yang harus dilakukan adalah memeriksanya menggunakan Alat Webmaster Google dan melihat apakah ada konsekuensi negatif.

artlung
sumber