Skip to content

Instantly share code, notes, and snippets.

@artidataio
Last active August 9, 2022 15:40
Show Gist options
  • Save artidataio/d93a7c0fe07b3f1084a6a6cc7ba0a603 to your computer and use it in GitHub Desktop.
Save artidataio/d93a7c0fe07b3f1084a6a6cc7ba0a603 to your computer and use it in GitHub Desktop.
Pengertian CORS Proxy

Mungkin saya luruskan dulu pengertian CORS nya. Sebenernya "CORS error" di browser terjadi karena browser Fetch API tunduk sama same-origin policy. Jadi defaultnya, JavaScript yang di serve di situs https://domain-a.com tidak dibolehkan browser melakukan http request ke https://domain-b.com/data.json.

Justru CORS (Cross-Origin-Resource-Sharing) itu mekanisme yang membolehkan kode JavaScript yang di browser yang di serve di https://domain-a.com untuk melakukan http request ke domain lain contohnya https://domain-b.com/data.json.

Implementasinya seperti apa?

Melalui http header Access-Control-Allow-Origin dari server. Kalau misalnya http header itu valuenya *, berarti CORS enabled, jadi javascript dari website apapun dibolehkan browser mengakses resources dari server tersebut. Kalau misalnya header tersebut gak dikasih sama server, defaultnya si browser gak ngijinin akses.

Headernya missing, tapi kenapa di Postman bisa akses?

Karena Postman tidak tunduk dengan same-origin policy, jadi gak peduli ada atau tidaknya header tersebut.

CORS Proxy ini apa?

Jadi kita frontend developer kadang gak bisa modifikasi servernya untuk menambahkan http header Access-Control-Allow-Origin. Tapi kita yakin response dari server itu aman utuk user yang mengakses website kita. Solusinya, buat server baru yang melakukan http request ke server

Apakah server buatan tidak kena CORS?

Di sini pertanyaanya agak membingungungkan, kalau misalnya yang dimaksud "kena CORS" itu kena "Kena CORS error", jawabannya tidak. Karena server proxy di sini dibuat utuk tidak mempedulikan ada atau tidaknya http header Access-Control-Allow-Origin. Tapi kalau misalnya "kena CORS" maksudnya server gak nerima http header tersebut? Jawabannya kena juga, tapi server proxy ini gak peduli aja. Terus server proxy ini udah di enabled CORSnya, jadi dikasih nama CORS Proxy.

Untuk pengertian CORS lebih lanjut: https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment