01. CORS policy (Origin Resource Sharing) - Introduction
CORS
CORS – Cross Origin Resource Sharing.
Web page එකක් බොහෝ අවස්ථාවලදී server වලින් data request කර ඒ ලබා ගන්නා data process කිරීම මගින් user ට අවශ්ය පරදී පෙන්වීම හෝ වෙනත් අවශ්ය operation කරනු ලබයි. එහිදී page එක එසේ නැත්තම් browser එක data request කරන්නේ same origin එකේ server එකකින් නම් ඒක browser එක පැත්තෙන් ටිකක් safe වෙනවා.මොකද same origin නිසා. නමුත් data request කරන්නේ වෙනත් origin එකකින් නම් ඒ වගේ අවස්ථාවලදී browser එකට එන security පැත්තේ risk එක වැඩි. මොකද malicious code wage ඒවා download වෙලා ප්රශ්න ඇති වෙන්න පුලුවන්. ඒක හරියට අපි අපේ ගෙදරින්ම දෙයක් ඉල්ලද්දී වැඩිය බය වෙන්න ඕනේ නෑ සහ අපි අපේ ගෙදර ඉදන් වෙනම ගෙදරකින් මොනා හරි ඉල්ලද්දී පරිස්සම් වෙන්න ඕනේ මොකද ඒවා එන්නේ වෙනම තැනකින් නිසා.මෙන්න මේ හේතු නිසා browse එකක් default ම same origin allow කරනු ලබන අතර different origin වලින් නම් data ගන්නේ එවිට වෙනම checking part එකක් කරලා තමා data access කරන්න දෙන්නේ.
මොකද්ද මේ origin
එකක් කියන්නේ.
එයට ප්රධාන කොටස් 3 ක් තිබේ. එනම් web address එකක තියන protocol, host, port යන කොටස් 3 යි.same origin වීමට මෙම කොටස් 3 ම සමාන විය යුතුය.
Ex: Client data request කරන්නේ https://www.abc.com යන domain එකේ සිට නම්,
Protocol – https | host – www.abc.om | port
https://www.abc.com/get-student => Allowed. Because origin is same (protocol + host + port)
http://www.abc.com/get-student => Not allowed. Because protocol is different (https and http)
https://www.a.abc.com/get-student => Not allowed.
Because origin is different (Although sub domain, [protocol + host +
port] combination is different).
Server එක CORS enabled නම් response එකක් දෙනවා preflight request එකට. ඊට පස්සේ data ගන්න actual call එක, ඒ response එකත් එක්ක compare කරලා fail or pass කරනවා.
එසේ නැත්තම් server එක CORS enabled කරලා නැත්තන් preflight request එකට response එකක් දෙන්නේ නෑ.එවිට ඒ origin එකට browser එකෙන් යන request block කරනු ලබයි(CORS කරනු ලබයි)
Sending preflight request . If server is CORS enabled, server replies back with I am allowing these origins, these headers and these methods. If server is not CORS enabled, then server not responds to preflight (Optional call) request. Then browser says CORS fail error.
CORS fail - You are not allowed CORS at all or You are allowed CORS at all and send from different domain or different method or allow 2 headers you are trying to send 3 headers.
CORS
validation happen in 3 different ways.
1.
Coming from real origin which we allowed.
2.
Whether you are carrying allowed headers (Authorization
header + content type header).
3. Method - GET, POST, PUT.
I am
coming from this origin, I am carrying this much of messages and can I fly -
Preflight request.
CORS only experience in browser. එම නිසා user ට අවශ්ය නම් browser එකෙන් CORS validation කරන එක disable කරිමටද හැක (Browser interceptors to bypass this)
Comments
Post a Comment