国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

Javascript跨域請求的4種解決方式

2024-05-06 14:19:19
字體:
來源:轉載
供稿:網友
什么情況下才會出現跨域?
假設域名是:http://www.example.com.cn/
如果所請求的域名跟這個域名不致,這種情況就是跨域,由于跨域存在漏洞,所以一般來說正常的跨域請求方式是請求不到的。
解決方式:
一、window.name
1、 服務器返回
代碼如下:
<script>window.name='{"id":"3", "name":"leisure"}';</script>
2、定義一個iframe,添加onload事件 <iframe id="iframe1" onload="iLoad"><iframe>
<script type="text/javascript">
var load = false;
function iLoad() {
if(load == false) {
// 同域處理,請求后會再次重新加載iframe
document.getElementById('iframe1').contentWindow.location = '/';
load = true;
} else {
// 獲取window.name的內容,注意必須進行同域處理后方可訪問!
var data = document.getElementById('iframe1').contentWindow.name;
alert(data); // {"id":"3", "name":"leisure"}
load = false;
}
}
</script>

3、定義一個form,設置form的target為iframe的id,然后提交form
代碼如下:
<form action="url" method="POST" target="iframe1">
<button type="submit" value="submit" />
</form>

二、JSONP
服務器返回 callback({"id": "3", "name": "leisure"});
代碼如下:
<script type="text/javascript">
function callback(data) {
alert(data);
}
</script>
<script type="text/javascript" src="http://www.example.com.cn/product.jsp?id=5&jsonp=callback"></script>

三、jQuery.getJSON
服務器返回 json格式數據 test({"id": "3", "name": "leisure"}); test函數名為callback參數中定義
代碼如下:
$.getJSON(url + "?callback=?", data, function(data) {
}

注意callback=?這個參數必須帶上,jquery會自動生成一個函數名替換這個問號!jQuery.getJSON實際上是用了JSONP方式實現。
四、flash跨域
服務器添加crossdomain.xml
http://www.example.com.cn/crossdomain.xml
代碼如下:
<?xml version="1.0"?>
<cross-domain-policy>
<allow-access-from domain="*.another.com.cn" />
</cross-domain-policy>
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 永兴县| 晋州市| 云龙县| 边坝县| 奈曼旗| 肥城市| 九龙城区| 禄劝| 湘潭县| 务川| 临江市| 富川| 鲁山县| 平武县| 名山县| 江永县| 绥滨县| 双流县| 旬邑县| 邢台县| 濮阳县| 平塘县| 丹阳市| 益阳市| 永安市| 曲周县| 白银市| 金湖县| 天峨县| 交城县| 庆云县| 古蔺县| 丰顺县| 阳信县| 土默特右旗| 资兴市| 仁寿县| 荔浦县| 安图县| 奉化市| 通州市|