2017-03-27 32 views
0

我有這樣的代碼:爲什麼不執行跨越來源策略?

 $.getJSON("https://restcountries.eu/rest/v2/name/" + $("#nameOfCountry").val(), 
     { fullText: "true" }, function (data) { 
      console.log(data[0]); 
      $('#answer').html(data[0].capital); 
     }); 

我從其他服務器的響應。 所以我的問題是:爲什麼瀏覽器不在這裏強制執行交叉來源策略?

+4

因爲服務器這樣說:'訪問控制 - 允許來源:*' – Andreas

+0

它被稱爲CORS,請參閱https://en.wikipedia.org/wiki/Cross-origin_resource_sharing – CBroe

回答

1

Same Origin Policy永遠不會被服務器強制執行。它由瀏覽器強制執行。

在這種情況下,服務器使用the CORS standard包含一個Access-Control-Allow-Origin標題,告訴瀏覽器它有權與其他任何網站共享數據。

+0

這怎麼可能?我明白SOP是關於保護客戶免受邪惡要求的。所以它的「邪惡」服務器啓用SOP,它會變好嗎? –

+0

「這怎麼可能?」 - 我鏈接到規範。 – Quentin

+0

「所以它的」邪惡「服務器啓用SOP」 - 什麼?不,這與我所說的相反。託管數據的服務器(這是攻擊中的潛在受害者)告訴瀏覽器數據不敏感,並且* other *服務器不是邪惡的(或者至少,數據是否暴露無關緊要到邪惡的服務器,因爲數據不敏感)。 – Quentin