Same-Origin Policy
I webbläsarnas säkerhetsmodell ingår ett koncept som heter ”Same-Origin Policy”, det vill säga ”samma källa policy”. Detta är ett sätt att separera resurser som kommer ifrån olika källor, så att de inte kan komma åt varandras data och resurser. Detta innebär t.ex. att ett skript som körs i en sida, enbart får tillgång till andra sidors skript om de kommer ifrån en och samma källa. Man vill förstås undvika att skript som ligger i en sida kan gå in och kapa data ifrån en annan sida. Om så inte var fallet skulle en ”elak” sida kunna ha ett litet skript som låg i bakgrunden och stal information, såsom inloggningsuppgifter, ifrån andra sidor.
För att "Same-Origin Policy" ska anse att resurser kommer ifrån samma källa, krävs att de kommer ifrån samma domän, använder samma protokoll för hämtning och att de använder samma port för kommunikationen.
Att komma runt Same-Origin Policy
Ibland vill man kunna köra resurser och skript ifrån olika källor och låta dem samarbeta. Det finns en del sätt att komma runt "Same-Origin Policy".
- I vissa fall kan man via skript ändra på
document.domain
så att sidorna ser ut att komma ifrån samma domän. Det finns dock begränsningar för hur man får skriva omdocument.domain
. Man får bara ändra till en överliggande domän som tillhör samma domän som källan återfinns på. Låt säga att vår server är "www.webling.se
", om vi vill kan vi då sätta att vi kommer ifrån "webbling.se
". OBS: vi måste förstås ändra så att det blir samma värde för alla de resurser som ska delas. Portnummer och protokoll är separat ifrån domänen och vi kan inte ändra på dem med denna metod.
- CORS är en vanlig metod för att dela på resurser som hämtas ifrån olika servrar. Detta gäller inte minst när vi gör komplexa applikationer som använder APIer, data och andra resurser som kommer ifrån många olika källor.
Läs mer...
Läs mer på Same-Origin Policy.