关灯
开启左侧

vue中post请求变options请求

[复制链接]
doubleyong 发表于 2018-11-19 11:01:36 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
 
描述:
        原本使用vue中的代理跨域,post请求正常.
        然后,取消post请求,在服务器端(node),使用cors来解决跨后问题
问题:
       在设置cors来跨域后,post请求变成了options请求,并且,提示error:
Access to XMLHttpRequest at 'http://192.168.1.229:8888/productList.do' from origin 'http://localhost:63342' has been blocked by CORS policy: Request header field Content-Type is not allowed by Access-Control-Allow-Headers in preflight response.
    可查看问题原因的具体描述 :https://blog.csdn.net/xuedapeng/article/details/79076704      

代码如下:
  1. this.$axios.post("http://192.168.1.229:8888/productList.do",{username:'wawawahahha',pwd:"123456"}).then((response) =>{
  2.             console.log(response);
  3.             this.productList = response.data;
  4.           }).catch((error)=>{
  5.            console.log(error);
  6.         });
复制代码
解决方案:
       给请求添加一个请求头
       代码如下:
  1. let config = {
  2.           headers : {
  3.             'Content-Type':'application/x-www-form-urlencoded'
  4.           },
  5.         };
  6. ///static/product.json
  7.         this.$axios.post("http://192.168.1.229:8888/productList.do",{username:'wawawahahha',pwd:"123456"},config).then((response) =>{
  8.             console.log(response);
  9.             this.productList = response.data;
  10.           }).catch((error)=>{
  11.            console.log(error);
  12.         });
复制代码
解析:
报文变成了OPTION包,而不是POST请求报文。
原来这是跨域访问的一种安全检查机制:
首先发起OPTION对目标服务器进行测试,看看这种访问是否安全
在头部字段会出现下面三个
Access-Control-Request-Method: POST
Access-Control-Request-Headers: x-requested-with
Origin: null(跨域Ajax去掉X-Requested-With,带上这个)
当收到服务器端的响应允许后才发送正式POST或者GET请求。


这叫做预检报文如何不触发预检报文,有三个同时满足的必备条件(三项均成立才行):
1. 只能是Get、Head、Post方法
2. 除了浏览器自己在Http头上加的信息(如Connection、User-Agent),开发者只能加这几个:Accept、Accept-Language、Content-Type……
3. Content-Type只能取这几个值:
application/x-www-form-urlencoded
multipart/form-data
text/plain



参考:https://www.cnblogs.com/KevinGeorge/p/7701153.html
 
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

排行榜
关闭

站长推荐上一条 /1 下一条

官方微信

全国服务热线:

400-0708-360

公司地址:国家西部信息安全产业基地(成都市高新区云华路333号)

邮编:610000    Email:2908503813@qq.com

Copyright   ©2015-2016  EOIT论坛Powered by©Discuz!    ( 蜀ICP备11000634号-7 )