axios每次发送请求会有两次,多一次Request Method: OPTIONS是怎么回事?

现在vue项目中使用axios发送http请求,每次请求都会多一次Request Method: OPTIONS请求,然后才是get/post请求,请问这个是后台的问题还是我这边axios请求的问题?如果是前台可以解决,请问应该如何解决?

阅读 35.3k
5 个回答
为什么会发送OPTIONS请求?

其实跨域分为 简单跨域请求复杂跨域请求
简单跨域请求是不会发送options请求的
复杂跨域请求发送一个预检请求options
复杂跨域请求要满足以下:
1、请求方法不是GET/HEAD/POST
2、POST请求的Content-Type并非application/x-www-form-urlencoded, multipart/form-data, 或text/plain
3、请求设置了自定义的header字段

如果不想发送option请求可以改为简单请求 比如你的Content-Type可能是application/json格式 将其改为application/x-www-form-urlencoded

这个是非简单请求之前的预检请求,请求后端接口支持的方法等信息,是正常的,不需要前端做处理,但是需要后端对所有接口统一处理放行OPTIONS方法(即返回200)即可。
关于简单请求和非简单请求可以百度了解之。

跨域怎么处理的,是不是CORS,options是预检请求,没关系的,检查你的参数是否合规,可以了解一下这种跨域方式

如果不想出现的话,可以考虑一下jsonp解决跨域,而且npm也有jsonp的模块

options请求会在跨域时出现,options成功后才会进行get post请求

推荐问题
宣传栏