Origin
Penggunaan
Browser melampirkan header Origin pada permintaan lintas origin dan pada permintaan same-origin yang dipicu oleh metode atau API tertentu. Header ini mengidentifikasi asal permintaan tersebut, sehingga memberi server informasi yang dibutuhkan untuk menegakkan kebijakan kontrol akses.
Header ini muncul pada semua permintaan CORS (termasuk preflight), pengiriman formulir menggunakan POST, serta permintaan yang diinisiasi oleh Fetch API atau XMLHttpRequest. Browser tidak menyertakan header ini pada permintaan navigasi GET atau HEAD yang same-origin.
Tidak seperti header Referer, Origin tidak pernah menyertakan path maupun query string, sehingga nilainya lebih menjaga privasi. Header Sec-Fetch-Site memberikan sinyal pelengkap dengan mengklasifikasikan permintaan sebagai same-origin, same-site, cross-site, atau none.
scheme://host:port
Origin lengkap yang terdiri atas protokol, hostname, dan port. Port dihilangkan ketika protokolnya menggunakan port bawaan (80 untuk HTTP, 443 untuk HTTPS).
Origin: https://example.com
Origin: https://api.example.re:8443
null
Dikirim ketika origin bersifat sensitif terhadap privasi atau opak. Iframe yang di-sandbox, URL data:, dan redirect lintas origin menghasilkan nilai null.
Origin: null
Catatan
Server yang mengandalkan null untuk kontrol akses menciptakan celah keamanan. Beberapa konteks yang tidak saling berkaitan berbagi origin null yang sama, sehingga memercayai nilai tersebut berarti memberi akses kepada semuanya.
Contoh
Permintaan POST lintas origin dari sebuah aplikasi front-end menyertakan header Origin agar server memverifikasi pemanggilnya sebelum mengembalikan respons yang mengaktifkan CORS.
Permintaan
POST /api/orders HTTP/1.1
Host: api.example.re
Origin: https://shop.example.re
Content-Type: application/json
Respons
HTTP/1.1 201 Created
Access-Control-Allow-Origin: https://shop.example.re
Vary: Origin
Permintaan preflight OPTIONS membawa origin bersama metode dan header yang dimaksudkan.
Permintaan
OPTIONS /api/orders HTTP/1.1
Host: api.example.re
Origin: https://shop.example.re
Access-Control-Request-Method: POST
Access-Control-Request-Headers: content-type