kembali ke pelajaran

Kenapa kita membutuhkan Origin?

pentingnya: 5

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:

  1. Kenapa Origin dibutuhkan, jika Referer memiliki lebih banyak informasi?
  2. Apakah mungkin jika fetch tidak memakai Referer atau Origin, atau apakah fetch 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.