2016-04-09 62 views
0

這使我困惑不已。假設我在瀏覽器中打開了2個選項卡,其中一個在http://aaa.com上,另一個在http://bbb.com上。跨國策略如何運作?

比方說,我做我瀏覽器中的JavaScript控制檯的請求

$ajax({ 
    method : 'POST', 
    url : 'http://aaa.com/SomeAction', 
    ... 
}); 

。我理解跨源策略的方式是,如果我輸入的JS控制檯是http://aaa.com選項卡中的那個,則服務器僅允許發生該請求。但服務器如何知道這一點?我的瀏覽器是否發送了一個標題,告訴它請求來自哪裏?

+0

您可以打開'Network'選項卡,選擇'$ .ajax()'請求的URL,點擊'Headers'選項卡,滾動到'Request Headers'查看請求的請求和響應頭。 – guest271314

+0

服務器不必知道任何事情 - _client_是執行此策略的人員。 (除非我們在這裏討論CORS,那麼服務器當然也必須發揮其作用。) – CBroe

+0

@CBroe - 即使使用CORS,服務器也不會執行策略;它放鬆了它。 – Quentin

回答

0

是服務器僅允許請求的情況發生,如果JS 控制檯我輸進是一個在選項卡http://aaa.com

事實並非如此。

沒有任何東西可以阻止example.com向example.org發送AJAX請求。然而,同源策略會阻止example.com讀取返回的響應。

Same Origin Policy在客戶端瀏覽器中執行,而不是在服務器上執行。