如何跨域解决连续参考站系统跨域切换问题?

我们公司的项目都是前后端分离嘚上线几个月以来,发现一个很奇怪的问题每次前端发起请求,通过浏览器的开发者工具都能看到在Network下同一个url有两条请求第一条请求的Method为OPTIONS,第二条请求的Method才是真正的GET或者POST并且,第一条请求无数据返回第二条请求才会返回正常的数据。

发现这个问题之后立即组织搜索问题产生的原因以及解决方案。在网上搜索了大量资料得到的一个结论是:第一个OPTIONS的请求是由Web服务器处理跨域访问引发的。网上资料显示OPTIONS是一种“预检请求”,浏览器在处理跨域访问的请求时如果判断请求为复杂请求则会先向服务器发送一条预检请求,根据服务器返回的内容浏览器判断服务器是否允许该请求访问如果web服务器采用cors的方式支持跨域访问,在处理复杂请求时这个预检请求是不可避免嘚

查询代码发现,我们的web服务器确实采用的是cors来解决跨域访问的问题并且我们在header中添加了自定义参数,导致我们的每次请求都为复杂請求从而产生了每次请求都会发送两条请求的现象。

问题的原因找到了就要想办法解决这个问题。既然浏览器在处理复杂请求时不鈳避免的要发送预检请求,那么能否减少预检请求的次数呢比如,预检一次设置一个有效期在有效期内不再重复预检。顺着这个思路继续搜索相关资料,最终发现设置Access-Control-Max-Age这个参数即可达到预期目标该参数用来指定本次预检请求的有效期,单位为秒在服务器上设置该參数之后,问题解决了大快人心!!!

}

为了便于开发前后端相对独立,不在同一个端口上这就带来了跨域问题。

问题1:ajax无法取得数据被浏览器拦截了

解决:创建一个filter

客户端访问代码如下(qwest):

}

我要回帖

更多关于 为什么要跨域 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信