我正在開發JavaScript API服務。主html頁面如下所示:跨站點javascript問題
<html>
<head>
<script type="text/javascript" src="scripts/logic.js"></script>
<script type="text/javascript" src="scripts/jquery-1..."></script>
<script type="text/javascript" src="http://mydomain/api/main.js"></script>
</head>
...
</html>
在main.js腳本中,我從mydomain加載另一個腳本。我正在通過添加腳本標記([script .. src =「http://mydomain/api/getsomedata.js?callback_id = 3434 & someparams = ...」])來執行此操作。加載的腳本直接調用API回調函數:MyApi.processCallback(...)。一切正常。
但是當我試圖從本地文件(logic.js)加載另一個mydomain腳本時,我收到了非常奇怪的情況:所有腳本全局對象都是未定義的。沒有MyApi對象或jQuery $對象在前面的調用中可見。所以我不能調用MyApi回調函數。
也許是因爲安全限制。反XSS或類似的東西。我嘗試添加X-XSS-Protection標頭,就像所有Google JavaScript API一樣。但它沒有幫助。
我不使用IFRAMES。
這個問題可以完全解決,因爲許多跨站點JavaScript API都可以在同一個想法上運行(Google Maps API等)。