簡體   English   中英

為什么same-origin-policy在本地域上阻止此javascript調用?

[英]Why is same-origin-policy blocking this javascript call on a local domain?

我在http://mysite.local/上運行了一個本地開發站點(這是安裝了Grappelli的Django管理站點,如果有關系的話)。

管理站點打開一些操作的彈出窗口(即通過showRelatedObjectLookupPopup()

由於先前具有相同來源策略的類似問題(在生產中,管理站點從CDN域中加載了一些URL,這可能會觸發它),我們有了一個“規范化” JS函數,該函數顯式設置:

document.domain = "mysite.local";

在頁面加載時,在父級和彈出式窗口中均如此。

彈出窗口包含一個帶有onclick處理程序的鏈接,該鏈接會在父級中觸發JS函數:

onclick="opener.dismissRelatedLookupPopup(window, '422'); return false;"

在Chrome或FF中單擊此鏈接會導致類似的瀏覽器錯誤:

跨域對象訪問屬性“ dismissRelatedLookupPopup”的權限被拒絕

要么

阻止了起源為“ http://mysite.local ”的框架訪問跨域框架。

彈出URL和打開URL都共享相同的協議,域和端口。

這只是本地域上的一個問題。 在dev / uat / production網站(例如dev.mysite.com)上,通過上述“ normaliser”功能將所有域的域都設置為超域“ mysite.com”,彈出窗口可以在家長。

是什么在本地域上阻止了它? 我錯過了什么?

看來,按照@charlietfl最初的建議切換本地域確實可以解決此問題。 現在,它以local.mysite.com而不是mysite.local在本地運行,並且同源錯誤消失了。 我仍然不清楚是什么引發了錯誤(是因為該域只有兩個部分而不是三個部分?它是針對以“ .local”結尾的域嗎?),但是在極少數情況下,其他任何人都會跳閘為此,這就是為我解決的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM