Kenapa kita membutuhkan Origin?
Seperti yang kamu ketahui, Ada pembaca header HTTP Referer
, yang biasanya berisi url dari halaman yang dimulai dari request jaringan.
Misalnya, saat pengambilan http://google.com
dari http://javacript.info/some/url
, header terlihat seperti ini:
Accept: */*
Accept-Charset: utf-8
Accept-Encoding: gzip,deflate,sdch
Connection: keep-alive
Host: google.com
Origin: http://javascript.info
Referer: http://javascript.info/some/url
Seperti yang kamu lihat, baik Referer
dan Origin
ada.
Pertanyaan:
- Kenapa
Origin
dibutuhkan, jikaReferer
memiliki lebih banyak informasi? - Apakah mungkin jika
fetch
tidak memakaiReferer
atauOrigin
, atau apakahfetch
itu salah?
Kita membutuhkan Origin
, karena terkadang Referer
tidak digunakan. Misalnya, saat kita fetch
halaman HTTP dari HTTPS(mengakses yang kurang aman dari yang aman), maka tidak memakai Referer
.
Kebijakan keamanan konten mungkin akan melarang untuk pengiriman Referer
.
Seperti yang kita lihat, fetch
memiliki opsi untuk mencegah mengirim Referer
, dan mengizinkan untuk mengubahnya ( di situs yang sama).
Dari Spesifikasi, Referer
adalah header HTTP opsional.
Tepatnya karena Referer
tidak dapat diandalkan, dibuat lah Origin
. Browser menjamin *Origin
*yang benar untuk request cross-origin.