解决 axios 跨域时,发送 post 请求前options 404


在使用vuejs开发前后端完全分离的项目时,都会使用跨域请求。在开发过程中就遇到这样的坑。直接上代码

let config = {
        headers : {
            'Content-Type':'application/json;charset=UTF-8'
        },
    };
axios.post(this.authUrl,JSON.stringify(this.userInfo),config)
    .then(res => {
        console.log(res)
    })
    .catch(err => {
         console.log(err)
    })

上面的代码在请求之后的结果如下

Request URL:http://59.110.160.110:9990/login
Request Method:OPTIONS
Status Code:404 Not Found
Remote Address:59.110.160.110:9990
Referrer Policy:no-referrer-when-downgrade
Response Headers
view source
Access-Control-Allow-Credentials:true
Access-Control-Allow-Headers:Content-Type, Content-Encoding, Cache-Control,
Content-Length, Accept-Encoding, Authorization, Origin, X-Requested-With,
Accept
Access-Control-Allow-Methods:GET, POST
Access-Control-Allow-Origin
Content-Length:18
Content-Type:text/plain
Date:Tue, 10 Oct 2017 08:58:57 GMT
Request Headers
view source
Accept:/
Accept-Encoding:gzip, deflate
Accept-Language:zh-CN,zh;q=0.8
Access-Control-Request-Headers:content-type
Access-Control-Request-Method:POST
Connection:keep-alive
Host:59.110.160.110:9990
Origin:http://localhost:8080
Referer:http://localhost:8080/
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36

上面的结果导致总是返回 404 ,因为后台不允许 options 访问。

后来查询各种资料发现:根源在于,我们发出去的请求不是 simple request,那么在每次发送请求之前,都会发送一个 options 请求,simple request 需要同时满足以下条件(规范可以百度查询):

  1. get、post、head 请求类型
  2. 不要设置列表之外的header(如: user-agent)
  3. Content-Type 只能是:
    1. application/x-www-from-urlencoded
    2. multipart/from-data
    3. text/plain

其他资料也说过,默认请求就是 application/json,所以不需要自己加上头部,现在上正确的代码:

axios.post(this.authUrl,JSON.stringify(this.userInfo))
    .then(res => {
        console.log(res)
    })
    .catch(err => {
        console.log(err)
    })
版权声明:本文为YES开发框架网发布内容,转载请附上原文出处连接
YES开发框架
上一篇:vue项目使用axios发送请求让ajax请求头部携带cookie
下一篇:window服务器安全的一些配置
评论列表

发表评论

评论内容
昵称:
关联文章

解决 axios 发送 post 请求options 404
vue项目使用axios发送请求让ajax请求头部携带cookie
消息发送的问题
windows平台的分布式微服务解决方案(2)--访问
.NET中大型项目开发必备(2)--CORS访问
IIS配置允许访问
.NET中大型项目开发必备(9)--http请求调用(Post与Get)
使用.NET 6开发TodoList应用(6)——使用MediatR实现POST请求
同时多个请求_axios多并发请求
C# HTTP或HTTPS Get请求Post 请求
.net core MVC 使用 jquery ajax请求 Post json
使用.NET 6开发TodoList应用(19)——处理OPTION和HEAD请求
【HttpHelper】HTTP Get和Post请求
使用.NET 6开发TodoList应用(10)——实现DELETE请求以及HTTP请求幂等性
Windows server 解决“无法完成加入,原因是试图加入的的SID与本计算机的SID相同
C#邮件发送
记一次本地正常上线接口报404
C#利用CefSharp的ChromiumWebBrowser发起Post请求
Jquery请求API,AJax,Post,Get提交,失败,错误的处理
当CDN服务不可用,前端有什么解决办法

联系我们
联系电话:15090125178(微信同号)
电子邮箱:garson_zhang@163.com
站长微信二维码
微信二维码