Apa sebenarnya maksud HTTP / 1.1302?


120

Beberapa artikel yang saya baca pernah mengatakan bahwa itu berarti melompat (dari satu URI ke URI lainnya), tetapi saya mendeteksi "302" ini bahkan ketika sebenarnya tidak ada lompatan sama sekali!


1
Mungkin ada beberapa informasi bagus tentang ini di sini di dokumentasi wc3.org .
Copas

2
Perhatikan baik-baik: example.com example.com dan example.com berbeda secara logis, dan situs yang ingin diakses melalui satu URL dapat mengalihkan satu sama lain untuk mencapai hal ini. Tentu saja, 302 pengalihan adalah pilihan yang buruk untuk ini ... tetapi Anda mungkin telah melihat variasi yang sama halusnya.
Shog9

Jawaban:


74

Pengalihan 302 berarti halaman dipindahkan sementara, sedangkan 301 berarti dipindahkan secara permanen.

301 baik untuk nilai SEO, sedangkan 302 bukan karena 301 menginstruksikan klien untuk melupakan nilai URL asli, sedangkan 302 menyimpan nilai asli dan dengan demikian berpotensi mengurangi nilai dengan membuat dua, URL yang secara logis berbeda yang masing-masing menghasilkan konten yang sama (mesin telusur melihatnya sebagai duplikat berbeda, bukan sebagai sumber daya tunggal dengan dua nama).


58

Pertanyaan ini sudah lama ditanyakan, saat RFC 2616 masih berkeliaran. Beberapa jawaban atas pertanyaan ini didasarkan pada dokumen yang sudah tidak relevan lagi saat ini. Mengutip Mark Nottingham yang, pada saat penulisan, memimpin bersama Kelompok Kerja HTTP dan QUIC IETF:

Jangan gunakan RFC2616 . Hapus dari hard drive, bookmark, dan bakar (atau daur ulang secara bertanggung jawab) setiap salinan yang dicetak.

RFC 2616 lama telah digantikan oleh dokumen berikut yang, bersama-sama, menentukan protokol HTTP / 1.1:

Jadi saya bertujuan untuk memberikan jawaban berdasarkan RFC 7231 yang merupakan referensi saat ini untuk kode status HTTP / 1.1.

The 302kode status

Tanggapan dengan 302adalah cara umum melakukan pengalihan URL. Bersama dengan 302kode status, respons harus menyertakan Locationheader dengan URI berbeda. Header tersebut akan diurai oleh agen pengguna dan kemudian melakukan pengalihan:


Contoh pengalihan


Browser web dapat berubah dari POSTmenjadi GETdalam permintaan berikutnya. Jika perilaku ini tidak diinginkan, 307kode status (Pengalihan Sementara) dapat digunakan sebagai gantinya.

Ini adalah bagaimana 302kode status didefinisikan di RFC 7231 :

6.4.3. 302 Ditemukan

Itu 302 (Ditemukan) kode status menunjukkan bahwa sumber daya sasaran berada sementara di bawah URI yang berbeda. Karena pengalihan terkadang dapat diubah, klien harus terus menggunakan URI permintaan yang efektif untuk permintaan di masa mendatang.

Server HARUS membuat Locationkolom header dalam respons yang berisi referensi URI untuk URI yang berbeda. Agen pengguna DAPAT menggunakan nilai Locationbidang untuk pengalihan otomatis. Muatan respons server biasanya berisi catatan hypertext pendek dengan hyperlink ke URI yang berbeda.

Catatan: Karena alasan historis, agen pengguna DAPAT mengubah metode permintaan dari POSTmenjadi GETuntuk permintaan berikutnya. Jika perilaku ini tidak diinginkan, 307kode status (Pengalihan Sementara) dapat digunakan sebagai gantinya.

Menurut dokumen web MDN dari Mozilla , kasus penggunaan tipikal untuk 302adalah:

Halaman Web untuk sementara tidak tersedia karena alasan yang tidak terduga. Dengan begitu, mesin telusur tidak memperbarui tautannya.

Kode status lain untuk pengalihan

The RFC 7231 mendefinisikan kode status berikut untuk pengalihan:

  • 301 (Pindah Permanen)
  • 302 (Ditemukan)
  • 307 (Pengalihan Sementara)

The RFC 7238 diciptakan untuk mendefinisikan kode status lain untuk pengalihan:

  • 308 (Pengalihan Permanen)

Lihat jawaban ini untuk detail lebih lanjut.


2
baik rasa sakit saya selama dua hari sudah berakhir terima kasih ( Locationheader adalah hal yang membantu saya). Ternyata saya menelepon layanan dengan httpdan mereka pindah ke https, yang saya dapatkan sebagai tanggapan adalah 302, segera setelah saya membaca Locationheader di sini, saya melihat http/httpsperbedaannya. Terima kasih!
Eugene

Saya punya alasan yang sama untuk kesalahan ini. Javascript saya menunjuk ke lokasi https yang salah sehingga pengalihan gagal. Terima kasih atas komentarnya
Maksimal

25

Cara sederhana untuk melihat pengalihan HTTP 301 vs. 302 adalah:

Misalkan Anda memiliki bookmark ke " http://sample.com/sample ". Anda menggunakan browser untuk pergi ke sana.

Pengalihan 302 ke URL yang berbeda pada saat ini berarti Anda harus menyimpan bookmark Anda ke " http://sample.com/sample ". Ini karena URL tujuan mungkin berubah di masa mendatang.

Pengalihan 301 ke URL yang berbeda berarti bahwa bookmark Anda harus berubah untuk mengarah ke URL baru karena ini adalah pengalihan permanen.


9

Dari RFC 2616 (Spesifikasi Protokol Transfer Hiperteks) :

10.3.3 302 Ditemukan

   Sumber daya yang diminta berada sementara di bawah URI yang berbeda.
   Karena pengalihan terkadang dapat diubah, klien HARUS
   terus gunakan URI Permintaan untuk permintaan di masa mendatang. Tanggapan ini
   hanya dapat disimpan dalam cache jika diindikasikan oleh header Kontrol-Cache atau Kedaluwarsa
   bidang.

   URI sementara HARUS diberikan oleh bidang Lokasi di
   tanggapan. Kecuali metode permintaannya adalah HEAD, entitas dari
   respons HARUS berisi catatan hypertext pendek dengan hyperlink ke
   URI baru.

Sumber:

http://www.ietf.org/rfc/rfc2616.txt


6

Dari Wikipedia :

Kode status tanggapan HTTP 302 Ditemukan adalah cara paling umum untuk melakukan pengalihan. Ini adalah contoh praktik industri yang bertentangan dengan standar.



5

302 adalah respons yang menunjukkan perubahan lokasi sumber daya - "Ditemukan".

Url tempat sumber daya seharusnya berada sekarang harus berada di tajuk 'Lokasi' respons.

"Lompatan" harus dilakukan oleh klien yang meminta (buat permintaan baru ke url sumber daya di bidang tajuk Lokasi respons).


5

Dalam hal SEO, 301 dan 302 keduanya bagus tergantung situasi,

Jika hanya satu versi yang dapat dikembalikan (yaitu, yang lain mengalihkan ke sana), itu bagus! Perilaku ini menguntungkan karena mengurangi konten duplikat. Dalam kasus tertentu pengalihan ke URL garis miring akhir, hasil penelusuran kami kemungkinan akan menampilkan versi URL dengan kode tanggapan 200 (paling sering URL garis miring) - terlepas dari apakah pengalihannya adalah 301 atau 302.



1

Menurut RFC 1945 / Hypertext Transfer Protocol - HTTP / 1.0 :

   302 Moved Temporarily

   The requested resource resides temporarily under a different URL.
   Since the redirection may be altered on occasion, the client should
   continue to use the Request-URI for future requests.

   The URL must be given by the Location field in the response. Unless
   it was a HEAD request, the Entity-Body of the response should
   contain a short note with a hyperlink to the new URI(s).

   If the 302 status code is received in response to a request using
   the POST method, the user agent must not automatically redirect the
   request unless it can be confirmed by the user, since this might
   change the conditions under which the request was issued.

       Note: When automatically redirecting a POST request after
       receiving a 302 status code, some existing user agents will
       erroneously change it into a GET request.

0
  • Kode 302 menunjukkan pengalihan sementara .
  • Salah satu fitur paling menonjol yang membedakannya dari pengalihan 301 adalah, dalam kasus 302 pengalihan, kekuatan SEO tidak ditransfer ke URL baru.
  • Ini karena pengalihan ini telah dirancang untuk digunakan saat ada kebutuhan untuk mengalihkan konten ke halaman yang bukan halaman definitif. Dengan demikian, setelah pengalihan dihilangkan, halaman asli tidak akan kehilangan posisinya di mesin pencari Google.

CONTOH: - Meskipun tidak terlalu umum bahwa kami membutuhkan pengalihan 302, opsi ini bisa sangat berguna dalam beberapa kasus. Ini adalah kasus yang paling sering terjadi:

  • Saat kami menyadari bahwa ada beberapa konten yang tidak pantas di halaman. Sementara kami menyelesaikan masalah, kami dapat mengarahkan pengguna ke halaman lain yang mungkin menarik.
  • Jika serangan di situs web kami membutuhkan pemulihan halaman mana pun, pengalihan ini dapat membantu kami meminimalkan insiden tersebut.

Pengalihan 302 adalah kode yang memberi tahu pengunjung URL tertentu bahwa halaman telah dipindahkan sementara, mengarahkan mereka langsung ke lokasi baru.

  • Dengan kata lain, pengalihan 302 diaktifkan saat robot Google atau mesin telusur lain meminta untuk memuat laman tertentu. Pada saat itu, berkat pengalihan ini, server mengembalikan respons otomatis yang menunjukkan URL baru.

  • Dengan cara ini kesalahan dan gangguan dihindari baik untuk mesin pencari dan pengguna, menjamin navigasi yang lancar.

Untuk lebih jelasnya Lihat Artikel ini .


0

Kode status 302 adalah kode status respons HTTP yang menunjukkan bahwa sumber daya yang diminta telah dipindahkan untuk sementara ke URI yang berbeda. Karena lokasi atau arahan pengalihan saat ini mungkin berubah di masa mendatang, klien yang menerima kode respons 302 Found harus terus menggunakan URI asli untuk permintaan di masa mendatang.

Respons HTTP dengan kode status ini juga akan memberikan URL di kolom header, Lokasi. Ini adalah undangan ke agen pengguna (misalnya browser web) untuk membuat permintaan kedua, jika tidak identik, ke URL baru yang ditentukan di bidang lokasi. Hasil akhirnya adalah pengalihan ke URL baru.


0

Bagi siapa pun yang mungkin ingin tahu tentang penamaannya, saya hanya akan menambahkan bahwa ini mungkin disebut "Ditemukan" karena sumber daya utama (misalnya, halaman web pribadi) yang ingin diterima pengguna tidak tersedia pada saat itu (misalnya, pengguna belum membuktikan identitasnya), jadi server telah menemukan sumber daya baru yang dapat diterima pengguna (yang merupakan laman masuk dalam kasus penggunaan paling umum).

Juga "tersesat dan ditemukan" dengan cara petak umpet, yang berarti sumber daya yang hilang dengan status 302 hanya hilang sementara , tidak seharusnya hilang selamanya (kecuali jika pemain memiliki niat buruk;)).

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.