當前位置:首頁 » 文件傳輸 » js跨域訪問
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

js跨域訪問

發布時間: 2022-01-25 14:28:50

① js跨域調用

通過script標簽來請求,原理就是在本域內的A內生成一個JS標簽,它的SRC指向請求的另外一個域的某個頁面B,這個src裡面通常會加一個A頁面定義好的回調函數,B返回數據即可,可以直接返回調用這個回調函數,這種跨域的通信方式被稱為JSONP,此方案存在的缺陷是, script的src屬性完成該調用時採取的方式時get方式,如果請求時傳遞的字元串過大時,可能會無法正常運行。

② js跨域調用如何實現

1.什麼是跨域

經常會在頁面上使用ajax請求訪問其他伺服器的數據,此時,客戶端會出現跨域問題.

跨域問題是由於javascript語言安全限制中的同源策略造成的.

簡單來說,同源策略是指一段腳本只能讀取來自同一來源的窗口和文檔的屬性,這里的同一來源指的是主機名、協議和埠號的組合.

2.解決方案:
伺服器端:
protectedvoidPage_Load(objectsender,EventArgse)
{
stringresult="callback({"name":"zhangsan","date":"2012-12-03"})";

Response.Clear();
Response.Write(result);
Response.End();
}

客戶端:
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<scripttype="text/javascript">

varresult=null;
window.onload=function(){
varscript=document.createElement("script");
script.type="text/javascript";
script.src="http://192.168.0.101/ExampleBusinessApplication.Web/web2.aspx";

varhead=document.getElementsByTagName("head")[0];
head.insertBefore(script,head.firstChild);

};

functioncallback(data){
result=data;
}

functionb_click(){
alert(result.name);
}
</script>
</head>
<body>
<inputtype="button"value="clickme!"onclick="b_click();"/>
</body>
</html>

③ js跨域訪問js

前提是你要調用dwr的js函數是普通函數而不是他那邊調用後台java類的函數,否則能調但得不到結果。

④ 如何解決js跨域問題

解決js跨域問題有以下一種方式
使用jsonp
服務端代理
服務端設置Request Header頭中Access-Control-Allow-Origin為指定可獲取數據的域名

⑤ 什麼是JS跨域訪問

www..com下調用www..com/map/city 這不屬於跨域
www..com下調用map..com/ 這就是屬於跨域
還有埠不同也屬於跨域

⑥ javascript 跨域 問題

XMLHttpRequest2 進行跨域訪問時需要伺服器許可,不是任何域都接受跨域請求的。先來看一下從 Yahoo YQL 域返回的響應頭(Response Header ):

HTTP/1.1200OK
Set-Cookie:AO="o=1&s=1&dnt=1";Version=1;Domain=yahoo.com;Max-Age=630720000;Expires=Sat,18-Jun-203310:07:41GMT;Path=/
Access-Control-Allow-Origin:*
Cache-Control:public,max-age=899
Content-Type:text/xml;charset=utf-8
Content-Encoding:gzip
Vary:Accept-Encoding
Date:Sun,23Jun201310:07:40GMT

注意裡面有一條標識 Access-Control-Allow-Origin:* ,這就表示允許跨域訪問,所以可以正常訪問該域,而對於其他沒有該標識的域就會出現禁止訪問提示。

那麼如何設置呢?如果要接受跨域訪問請求,就必須在伺服器端返回的資源中加入Access-Control-Allow-Origin 頭標識,Access-Control-Allow-Origin 的值可以是 URL或 *,如果是 URL 則只會允許來自該 URL 的請求,* 則允許任何域的請求。比如,在 HTML 中可以設置:

<metahttp-equiv="Access-Control-Allow-Origin"content="*">

<metahttp-equiv="Access-Control-Allow-Origin"content="http://www..com:80">

⑦ javaScript 跨域訪問 被拒絕 如何解決

同一個子域才可以javascript通信。例如:
http://www.163.com
http://mail.163.com
並修改
document.domain = '163.com';這樣這2個頁面之間才不會被拒絕

⑧ js 跨域請求傳遞參數並跳轉頁面

你可以使用ajax,將數據傳輸到後台,判斷下條件是否滿足,返回信息,然後用window.href=『』進行超鏈接跳轉

⑨ javascript 跨域調用js文件問題.....

三種方法實現js跨域訪問

1.基於iframe實現跨域

基於iframe實現的跨域要求兩個域具有aa.xx.com,bb.xx.com這種特點,也就是兩個頁面必須屬於一個基礎域(例如都是xxx.com,或是xxx.com.cn),使用同一協議(例如都是 http)和同一埠(例如都是80),這樣在兩個頁面中同時添加document.domain,就可以實現父頁面調用子頁面的函數,代碼如下:

頁面一代碼:
<html>
<head>
<script>
document.domain="xx.com";
functionaa(){
alert("p");
}
</script>
</head>
<body>
<iframesrc="http://localhost:8080/cmsui/2.html"id="i">

</iframe>
<script>
document.getelementbyid('i').oncg=function(){
vard=document.getelementbyid('i').contentwindow;
d.a();

};
</script>
</body>
</html>
頁面二代碼:
<html>
<head>
<script>
document.domain="xx.com";
functiona(){
alert("c");
}
</script>
</head>
<body>
</body>
</html>

這時候父頁面就可以調用子頁面的a函數,實現js跨域訪問


2.基於script標簽實現跨域

script標簽本身就可以訪問其它域的資源,不受瀏覽器同源策略的限制,可以通過在頁面動態創建script標簽,代碼如下

varscript=document.createElement('script');
script.src="http://aa.xx.com/js/*.js";
document.body.appendChild(script);

這樣通過動態創建script標簽就可以載入其它域的js文件,然後通過本頁面就可以調用載入後js文件的函數,這樣做的缺陷就是不能載入其它域的文檔,只能是js文件,jsonp便是通過這種方式實現的,jsonp通過向其它域傳入一個callback參數,通過其他域的後台將callback參數值和json串包裝成javascript函數返回,因為是通過script標簽發出的請求,瀏覽器會將返回來的字元串按照javascript進行解析執行,實現了域與域之間的數據傳輸。

jquery中對jsonp的支持也是基於此方案


3.後台代理方式


這種方式可以解決所有跨域問題,也就是將後台作為代理,每次對其它域的請求轉交給本域的後台,本域的後台通過模擬http請求去訪問其它域,再將返回的結果返回給前台,這樣做的好處是,無論訪問的是文檔,還是js文件都可以實現跨域