JavaScript跨域问题

一般情况下,前后端在传输数据时,都是在访问同一个域的资源。但有时也不可避免的要跨域发送请求,这是本文要探讨的内容。

(一) 什么是跨域

同源策略:

通过XHR实现AJAX通信的一个主要限制,来源于跨域安全策略。默认情况下,XHR只能访问于包含它的页面位于同一个域中的资源 。(所谓同一个域就是指 协议、域名、端口 三者相同)

跨域:

就是指违反同源策略,向不同的域发送请求,访问资源。

(二) 跨域的方法

1、CORS(CROSS-ORIGIN RESOURCE SHARING)

cors需要浏览器和服务器端同时支持(主要是服务器端支持)。只要后端实现了cors,就实现了跨域。
服务器端设置响应头部:Access-Control-Allow-Origin就可以开启cors。该属性可以设置那些网站可以访问资源。如果设置没有这个头部,浏览器就会驳回请求。
cors是实现跨域最根本的解决方案,可以发送任意请求,但前提是要服务器端支持。

2、jsonp(json with padding 带参数的json)

原理:利用script标签没有跨域限制的漏洞,网页可以得到从其他来源动态生成的json数据。
jsonp由两个部分组成回调函数和数据。回调函数是响应到来时应该在页面中调用的函数(用来处理json数据),数据就是传入回调函数的json数据。下面一个例子(使用的豆瓣影评的接口)

var script = document.createElement(‘script’);
script.setAttribute(‘src’, ‘http://api.douban.com/v2/movie/top250?callback=handleResponse’);
document.body.appendChild(script);
var moive;
function handleResponse(response) {
//你可以在此函数中任意处理传来的json数据
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值