Ajax-同源策略(跨域问题)

同源策略:是浏览器的一种安全策略。

同源:协议,域名,端口号必须完全相同。

当前网页资源的url与ajax请求的服务器目标资源的url必须三者保持一致,才满足同源策略。

ajax默认是遵循同源策略的,不遵循是不能直接发送ajax请求的。

违背同源策略就是跨域

有时候需要多个服务器提供服务,就需要解决跨域问题。

如何解决跨域?

方案一:JSONP(只支持get请求)原生跨域解决方案

全称JSON with padding,一个非官方的跨域解决方案。

原理:网页中有些标签本身就具备跨域能力,比如:img,link,iframe,script等。

JSONP是利用script标签的跨域能力来发送请求的。

使用:创建script标签,设置src属性为请求url。

前端声明一个接收数据的函数,后端需要返回js代码(函数调用形式,参数为响应的数据),由script标签解析。

jQuery发送jsonp请求:$.getJSON()

 注意:?callback?

实际发送请求时,callback是有值的。

服务端接收callback参数(用来注册函数),返回这个函数的调用。

 方案二:设置CORS响应头实现跨域

CORS(Cross-Origin Resource Sharing),跨域资源共享。CORS是官方的跨域解决方案,

  • 特点:不需要在客户端做任何的操作,完全在服务器中进行处理
  • 支持get,post请求
  • 跨域资源共享标准新增了一组HTTP首部字段,允许服务器声明哪些资源站通过浏览器有权限访问哪些资源

工作原理:CORS通过设置响应头来告诉浏览器,该请求允许跨域,浏览器收到该响应后就会对响应放行。

使用:主要是服务器端的设置

 哪个域名都可以访问,也可以自定义头部信息,支持所有请求方法。

方案三:

 通过iframe设置document.domain也可以实现跨域,这种方式用在主域名相同子域名不同的跨域访问中。

其他补充:

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值