参考前端
https://blog.csdn.net/charleslei/article/details/51906635json
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");服务器
},session
原来对于跨域,有两种不一样的请求类型。分别为简单跨域请求测试
简单跨域请求只要后端: c.getResponse().addHeader("Access-Control-Allow-Origin", "*");jsonp
不然浏览器会报错 No 'Access-Control-Allow-Origin' header is.net
和复杂跨域请求(就是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, 这时才会执行后面真正的请求; 不然请求将会被拒绝, 并抛出错误