Vue axios请求PUT/DELETE请求变OPTIONS
2017-12-19 16:34
148 查看
问题:
vue项目中使用axios请求,在使用get请求时没问题,在测试PUT/DELETE时出现请求类型变成OPTIONS的情况。如下请求在axios上稍作封装,原生axios相同。
请求方法:
deleteF: (val) => { let options = { method: 'delete', success: (data) => { console.log(data) }, error: (error) => { console.log(error) } } axiosAjax('/frontend/cmdb/host/delete/' + val, '', options) }
页面发送的网络请求:
在此,请求方式发生变化
分析:
这里有个前提没有提前说,不过如果你遇到这个问题,说明这个前提你应该是满足的,就是在跨域请求的会出现这个问题。非简单请求的CORS请求,会在正式通信之前,增加一次HTTP查询请求,称为”预检”请求(preflight),在post,put,delete发送之前发送一个 OPTIONS 请求,以判断服务端是否允许这一域访问.
所以这是一个正常的机制。
这个机制下产生的现象是在触发一次功能是会产生两个请求,一个OPTIONS”预检”请求,一个后续的正式请求。在OPTIONS请求成功后才会发送后续的请求。
解决:
因为后台已经做了允许跨域, 在明白上述过程后,我使用的解决方式是在接口遇到OPTIONS请求时不做处理直接返回,则后续真实请求就可以请求到。在生产部署时,前后端部署在同一环境,这个问题自然就不存在了!
OPTIONS请求:
真实请求:
相关文章推荐
- 《HTTP小书》读书笔记(3)请求之请求方法(关键词:计算机网络/HTTP/请求方法/GET/POST/OPTIONS/PUT/DELETE/CONNECT)
- http协议中的几种请求的方式(Get、Post、Put、Head、Delete、Options、Trace和Connect)
- REST四种请求(get,delete,put,post) 收集整理 之一
- python实现的json数据以HTTP GET,POST,PUT,DELETE方式页面请求
- http协议中:GET/POST/PUT/DELETE/INPUT/TRACE/OPTIONS/HEAD方法
- 对put,delete的restful请求进行过滤处理的工具类
- 如何让IIS 能响应HTTP PUT和DELETE请求
- HTTP Method详细解读(`GET` `HEAD` `POST` `OPTIONS` `PUT` `DELETE` `TRACE` `CONNECT`)
- 【Angular】angular-HttpClient 与服务器通讯 Get Post Put Delete Http 拦截器 请求讲解
- ajax参数传递之[HttpGet]/[HttpPost]/[HttpPut]/[HttpDelete]请求
- java发送http请求时设置请求方式(post,put,delete,get)
- WebApi系列~不支持put和delete请求的解决方法
- HTTP Request GET, HEAD, POST, PUT, DELETE, OPTIONS, TRACE Methods
- Http 四种请求访问代码 HttpGet HttpPost HttpPut HttpDelete
- 如何禁止DELETE、PUT、OPTIONS、TRACE、HEAD等协议访问应用程序 .
- Http 四种请求访问代码 HttpGet HttpPost HttpPut HttpDelete .
- [轻微]WEB服务器启用了OPTIONS方法/如何禁止DELETE,PUT,OPTIONS等协议访问应用程序/tomcat下禁用不安全的http方法
- springmvc restful put delete Ajax 请求参数取不到-已解决
- HTTP请求类型 get, post, put, delete汇总
- 通过 NSURLConnection 发送 HTTP GET /HTTP POST /HTTP DELETE /HTTP PUT 请求