前端处理跨域的一些方法

首先声明,跨域问题只在浏览器上出现,因为浏览器为了安全性考虑有同源策略的限制,同源策略规定,协议类型、域名、端口3者要一致才能被视为同源,跨域问题一般出现在前后端分离的项目中,一般有以下4种解决方法:

1. CORS跨域:后端接口在返回的时候,在header中加入  'Access-Control-Allow-origin':*  或者请求白名单(推荐)

2. 用nodejs搭建本地http服务器:并且判断访问接口URL时进行转发,完美解决本地开发时候的跨域问题。(开发环境)

3. 使用谷歌的插件解决:https://chrome.google.com/webstore/detail/moesif-origin-cors-change/digfbfaphojjndkpccljibejjbppifbc(开发环境)

4.JSONP

var script = document.createElement("script");
script.src = "https://api.douban.com/v2/book/search?q=javascript&count=1&callback=handleResponse";
document.body.insertBefore(script, document.body.firstChild);
function handleResponse(response){
    // 对response数据进行操作代码
}



另外再说一下options请求出现的原因

options请求是什么?带预检(Preflighted)的跨域请求需要浏览器在发送真实HTTP请求之前先发送一个OPTIONS的预检请求,检测服务器端是否支持真实请求进行跨域资源访问

什么情况下会有options请求?只要是带自定义header的跨域请求,在发送真实请求前都会先发送OPTIONS请求,浏览器根据OPTIONS请求返回的结果来决定是否继续发送真实的请求进行跨域资源访问。所以复杂请求肯定会两次请求服务端。

扫描二维码关注公众号,回复: 1438069 查看本文章

参考文章:https://blog.csdn.net/u014607184/article/details/52027879(跨越)

                 https://blog.csdn.net/u012017645/article/details/54315923(options)


猜你喜欢

转载自blog.csdn.net/qq_20343517/article/details/77450729