Javaweb Homework

在这里插入图片描述
绝对路径或者相对路径都可以。服务器访问的地址都会转化为绝对地址。

跨域问题来源于浏览器的同源策略,浏览器为了提高网站的安全性,在发送ajax请求时,只有在当前页面地址与请求地址的协议+域名+端口号相同时才允许访问,否则会被拦截。
方法一、通过jsonp跨域
JSONP包含两部分:回调函数和数据。
回调函数:当响应到来时要放在当前页面被调用的函数。
数据:就是传入回调函数中的json数据,也就是回调函数的参数了。

/*handleResonse({"data": "zhe"})*/
function handleResponse(response){
    console.log('The responsed data is: '+response.data);
    //处理获得的Json数据
}
var script = document.createElement('script');
script.src = 'http://www.example.com/data/?callback=handleResponse';
document.body.insertBefore(script, document.body.firstChild);
--------------------------
//2、手动生成script标签
function handleResponse(response){
    console.log('The responsed data is: '+response.data);
    //处理获得的Json数据
}
<script src="http://www.example.com/data/?callback=handleResponse"></script>
--------------------------
//3、使用jQuery进行jsonp操作
//jquery会自动生成一个全局函数来替换callback=?中的问号,之后获取到数据后又会自动销毁
//$.getJSON方法会自动判断是否跨域,不跨域的话,就调用普通的ajax方法;跨域的话,则会以异步加载js文件的形式来调用jsonp的回调函数。
<script>
    $.getJson('http://www.example.com/data/?callback=?',function(jsondata){
    //处理获得的Json数据
});
</script>

方法二、通过document.domain+iframe来跨子域
在不同的框架之间(父子或同辈),是能够获取到彼此的window对象的,但不能使用获取到的window对象的属性和方法(html5中的postMessage方法是一个例外),总之,你可以当做是只能获取到一个几乎无用的window对象。

//  http://www.example.com/a.html 页面中
<script>
function onLoad(){
    var iframe = document.getElementById('iframe');
    var win = iframe.contentWindow;
    //这里能够获取到iframe中的window对象,但是window对象的属性和方法几乎不可用。
    var doc = win.document;//这里获取不到iframe中的document对象
    var name = win.name;//这里获取不到window对象的name属性
    ······
}
<iframe id = "iframe" src ="http:// example.com/b.html" onload = "onLoad()"></iframe>

方法三、使用window.name+iframe来进行跨域
window的name属性特征:name 值在不同的页面(甚至不同域名)加载后依旧存在,并且可以支持非常长的 name 值(2MB),即在一个窗口(window)的生命周期内,窗口载入的所有的页面都是共享一个window.name的,每个页面window.name都有读写的权限。

<script>
    window.name = "哈哈,我是页面a设置的值哟!";
    //设置window.name的值
    setTimeout(function(){
        window.location = 'b.html';
    },3000);//3秒后把一个新页面载入当前window
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值