[英]Which Java Web Framework allows Cross-Domain Javascripting (http proxy)?
[英]alternative to cross-domain javascripting?
目前我依靠代理腳本來處理單一來源政策的這個問題。 它很慢,並且會產生開銷。 更不用說,javascript沒有呈現。
那里有替代品嗎?
如果您可以提供回調名稱作為提供相關JavaScript代碼的服務的參數,那么您可以在文檔中附加腳本標記,其中src
屬性指向服務調用。 否則,你運氣不好。
使用iframe並嘗試window.postMessage(message, origin)
(來自iframe的parent.postMessage
和來自首頁的iframeElement.contentWindow.postMessage
)適用於所有最新的主流瀏覽器(Firefox,IE,Safari,Chrome,等)和舊瀏覽器的更改/輪詢window.name
。
哦,親愛的,我認為您正在尋找的解決方案是使用IFRAME。 然而,iframe方法既是精神上的,也是技術上的。 我建議你從這個指南開始:
另一種方法是使用腳本標記和json以異步方式從另一台服務器獲取數據:
<script src="http://remotesite.com/path/to/script/blah.js"></script>
您可以創建一個新的SCRIPT標記元素來傳遞和加載數據並附加到DOM或將標記插入元素innerHTML中。
我相信你可以找到一些詳細的例子和方法來實現,但有一點你應該跟蹤新的SCRIPT方法是添加這么多的DOM。 這可能有所幫助,並為您提供一個起點:
function require (url, callback) {
if (!isScriptLoaded(url)) {
document.write('<script src="' + url + '" type="text/javascript" charset="utf-8"><\/script>');
if (callback) {
callback();
}
}
}
function isScriptLoaded(src) {
var scriptsLoaded = {};
var scriptTags = document.getElementsByTagName("script");
for (var i = 0, script; script = scriptTags[i]; i++) {
if (script.src) {
scriptsLoaded[script.src] = 1;
}
};
if (scriptsLoaded[src]) {
return true;
}
return false;
}
(未經測試,但應該工作!)
無論哪種方式 - 祝你好運。
JSON-P非常適合這種事情。 如果您正在使用jQuery或類似的JavaScript庫,那么您的工作將更加輕松:
http://docs.jquery.com/Ajax/jQuery.getJSON#urldatacallback
當然,它將取決於您正在嘗試做什么,這將決定是使用JSON-P,隱藏的iframe,postMessage,Flash代理還是任何其他奇特的解決方案。
如果您控制兩個域並且只關心Firefox 3.5+,則可以使用XMLHttpRequest對象並使用Access Control設置權限。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.