聊一聊跨域

越写代码越不敢对外宣称 自己是写代码的(发现不懂的太多 代码还有太多需要优化的地方)

咳咳闲话不多说 聊一聊跨域吧!

----------------------------------------------------------------

1.啥是跨越

一个域就相当一个房子 前端的界面 后台的逻辑 数据全在房子A里 咋开心咋玩随便

但是这时候 突然A房子的前端界面想去 B房子 请求点数据玩玩可就 不行 因为不住一个房子那那么好拿!

2.如何解决

较常见解决方法

第一种jsonp ,调试接口懒可以暂时用一用并不推荐(响应速度慢,且只支持GET)

第二种CORS 后端为特有前端传来的origin 修改header头信息 为access+【允许跨域域名】 (同理可以在配置Apache 或者nginx 服务器)允许跨域

3.其中坑点

对于多半业务场景了解到如何设置允许跨域域名 基本就已经足以解决这一问题

但由于之前公司的数据日志校验 却让我发现 其实跨域并没有这么简单!!!!

比如我的这个接口域名叫做

guruiqin.test.com

前端每发起一次请求我便在日志中记录下前端所发送的参数

1.{name:"王大锤1号"}

2.{name:"王大锤2号"}

3.{name:"王大锤3号"}

.... n号

理论上来说每发起一次请求 我记录一次请求内容 那么有n 次请求
就应该会有n条日志 在nginx 的log中也应该是n 条日志
但是在后期校验nginx 访问日志时却发现日志数量是2n!!!!
且日志内容非常诡异 第一条未记录下传递的任何参数  而第二条则于我们记录的日志一样

才发现其实我们由于在跨域时其实是会存在两种请求方式的
1.简单请求  (1.HTTP 方法仅为  HEAD  GET  POST  2.Http 头仅修改 Accept
Accept-Language
Content-Language
Last-Event-ID
Content-Type,但仅能是下列之一
application/x-www-form-urlencoded
multipart/form-data
text/plain
2.非简单请求(比如头信息修改了额外字段的)

在这里我们的请求就属于非简单请求 
而每次发起请求 由浏览器首先 发起一次option 请求 (获取类似一个token)
后再真正携带参数发起请求




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值