前端跨域请求解决方案

一般解决跨域请求有三种方法:
1、前后端配合 使用 jsonp
2、纯后端解决
3、服务器代理

先来看看 jsonp 解决方案:

jsonp解决方案原理非常简单,利用不受同源策略的标签的特性,实现跨域请求,有哪些不受同源策略影响的标签呢?img link script
img是图片,link是请求css的,script是请求js的,从三个的特性中看出script标签最适合了因为能获得js代码,并能执行,所以我们只需要在全局上提前创建一个函数当请求jsonp得到js代码时,获得的代码是一个执行的回调函数,函数中的参数是你想要的后端数据。这时候你只需要在提前声明的全局函数里面接受获得的数据就是了。原理很简单。要注意的是你必须将函数名告诉后端,后端才能返回正确的js执行函数回调。

纯后端解决:

后端设置请求头,让请求不存在同源限制

// 随意找的node后端请求头设置,网上一大堆
res.header("Access-Control-Allow-Origin", req.headers.origin); // 设置允许来自哪里的跨域请求访问(req.headers.origin为当前访问来源的域名与端口)
    res.header("Access-Control-Allow-Methods", "GET,PUT,POST,DELETE,OPTIONS"); // 设置允许接收的请求类型
    res.header("Access-Control-Allow-Headers", "Content-Type,request-origin"); // 设置请求头中允许携带的参数
    res.header("Access-Control-Allow-Credentials", "true"); // 允许客户端携带证书式访问。保持跨域请求中的Cookie。注意:此处设true时,Access-Control-Allow-Origin的值不能为 '*'
    res.header("Access-control-max-age", 1000); // 设置请求通过预检后多少时间内不再检验,减少预请求发送次数

服务器代理:

服务器之间的通信是没同源限制的。所以利用服务器之代理也可以实现跨域,至于怎么实现,写过后端之后自然知道了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值