前后端分离,ajax跨域请求,2次请求

原创
2018/05/08 11:06
阅读数 3.4K

参考

https://blog.csdn.net/charleslei/article/details/51906635

https://blog.csdn.net/kejmln/article/details/51350777

开发过程中,如果出现类似 “Origin ****** is not allowed by Access-Control-Allow-Origin.” 的错误,则可能是由于json数据不支持跨域导致的,应考虑使用jsonp协议

 

           beforeSend: function(XMLHttpRequest) {

            XMLHttpRequest.setRequestHeader("sessionid", "1233333");

           },

 

 

原来对于跨域,有两种不同的请求类型。分别为简单跨域请求

简单跨域请求只要后端:  c.getResponse().addHeader("Access-Control-Allow-Origin", "*");

否则浏览器会报错 No 'Access-Control-Allow-Origin' header is

 

复杂跨域请求(就是header加入自定义的值,带预检的跨域请求)

第一次请求(预检)    请求方法是options,    method='options'

(第一个OPTIONS的请求是由Web服务器处理跨域访问引发的)

 没有提交真正的请求(没有提交真的数据,头部的数据和表单的数据没有提交

// 解决前端js跨域

   如果后端设置了底下的访问,

    c.getResponse().addHeader("Access-Control-Allow-Origin", "*");

    if (c.getRequest().getMethod() == "OPTIONS") {  /

        c.getResponse().addHeader("Access-Control-Allow-Methods", "*");

        c.getResponse().addHeader("Access-Control-Allow-Headers", "*");

        c.getResponse().addHeader("Access-Control-Allow-Headers", "*");

    }

第二次请求

提交真的数据,头部的数据和表单的数据有提交

===========

https://blog.csdn.net/cscrazybing/article/details/63254762

查了些资料并且测试了下, 发现OPTIONS就是相当于在正式请求接口之前去获取以下header, 自然就是我们前面所设置的那些header. 如果在这次OPTIONS请求中服务器有返回正确的header, 这时才会执行后面真正的请求; 否则请求将会被拒绝, 并抛出错误

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部