跨域问题服务端方案初步了解

产生原因

为了防止CSRF攻击,浏览器同源策略禁止不同源页面进行DOM操作,禁止使用 XHR 对象向不同源的服务器地址发起 HTTP 请求。

跨域解决方案

现主要跨域解决方案有两种:JSONP跨域和CORS(跨域资源共享)
Ajax本身是不能跨域的,但是配合以上两种方案可以实现跨域。

JSONP方案

script脚本不受同源策略限制,JSONP就是利用script进行跨域请求,服务器把数据包装成JSON返回。
JSONP跨域只支持get请求
JQ+Ajax+JSONP实现跨域

$.ajax({
type:'GET',
dataType:‘jsonp’,
url:‘’,
jsonp:'name' , 	//指定参数名称
jsonpCallback:'function' ,	//指定回调函数
success:function (data) {

}
//		jsopn如果请求失败不会有任何错误返回
})

CORS方案
跨域资源共享(CORS)是一种机制,它通过HTTP头来告诉浏览器让运行在origin上的web应用被允许访问来自不同服务器上的资源。
新浏览器现在都支持CORS跨域,但是老式IE只能用JSONP。
CORS实现跨域客户端基本不变,服务端在返回数据时添加响应头让浏览器允许其通过
客户端:

$.ajax({
url:'',
type:'POST',
dataType:'jsonp',
crossDomain:'true',
xhrfieds:{withCreadentials'true'}		//true表示携带cookie跨域
}),
data:{},
function (data) {
}

CORS请求失败会产生错误,但是为了安全js层面是看不到错误信息的,
只有查看浏览器控制台才能看到。

两者的不同点

  • JSONP只能实现GET请求,而CORS支持所有类型的HTTP请求
  • 使用CORS,开发者可以使用普通的XMLHttpRequest发起请求和获得数据,比起JSONP有更好的错误处理
  • JSONP主要被老的浏览器支持,它们往往不支持CORS,而绝大多数现代浏览器都已经支持了CORS
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值