跨域你会了吗

  • 解决跨域的三种方式:jsonp、cors、proxy(服务器代理)
  • 产生跨域的原因: 协议名、域名、端口号、
第一种跨域请求的方式,使用 CORS 头

  一些新的浏览器,对于跨域请求并不完全禁止。而是会先发起(header)请求,收到响应之后观察响应头中是否有’Access-Control-Allow-Origin’字段或者名单中是否存在当前页的域名,如果没有 'Access-Control-Allow-Origin’或者名单中没有本页面的域名,浏览器就会认为该接口是禁止跨域请求的,把本次请求按照失效(失败)处理。如果 ‘Access-Control-Allow-Origin’ 中包含本页面的域名或者 ‘Access-Control-Allow-Origin’ 的值为:"*"(表示该接口是完全开放的),那么就认为该接口是可以跨域请求的,把请求到的数据用于调用请求成功的回调函数中。使用这种跨域方式的前提是:浏览器支持 ‘Access-Control-Allow-Origin’。

第二种跨域请求的方式,使用 JSONP:JSON Padding

  浏览器只禁止 ajax 跨域请求,对于资源标签 script 所发起的跨域请求不禁止。所以,可以巧妙的借助script标签并设置src的方式发送一个跨域请求。如果请求得到数据是js代码,那么这段代码会立即执行。利用这个特点,前端js要发送一个跨域的ajax请求时,先准备好一个回调函数callback,然后创建script标签,将src设置为要请求接口的地址路劲,并将callback的函数名作为参数传递服务器,服务器在收到这个函数名之后,使用这个函数名拼接好一段js代码(调用这个函数并传递数据),这个过程叫做:填充,最终将拼接好的js代码字符串返回给浏览器。

第三种跨域请求的方式,使用 http 服务器代理

  只有浏览器禁止ajax跨域请求,服务器可以发起跨域请求。所以页面需要发起跨域的ajax请求时,可以先将请求发送给本页面的域名的服务器,然后本域名的服务器将请求转发给目标服务器(最终要访问的接口),在目标服务器返回数据给本服务器后,本服务器再将数据返回给客户端。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值