axios post get 方法都会先 发送 OPTIONS 我想把这个 OPTIONS 验证去掉

由于 后端是 用的 c# Web API 2.0, 后端一直返回 405 ,后端只接受 post 请求,后端人员又不愿意改,
所以只能我前端用, 后端说 jQuery 的 ajax 都可以 ,凭什么 你现在不可以了。 后端不愿意改.

所以 问一下 大佬们 , axios 能去掉 OPTIONS 的验证吗 ,不用发 OPTIONS ,直接 post 请求。

阅读 19.2k
6 个回答

跨域并满足以下条件,浏览器就会发送OPTIONS请求:

  • It uses methods other than GET, HEAD or POST. Also, if POST is used to send request data with a Content-Type other than application/x-www-form-urlencoded, multipart/form-data, ortext/plain, e.g. if the POST request sends an XML payload to the server using application/xmlor text/xml, then the request is preflighted.
  • It sets custom headers in the request (e.g. the request uses a header such as X-PINGOTHER)

跨域并不一定发送options请求

  //针对post请求  
你的'Content-Type'不是'application/x-www-form-urlencoded' 或者如果有type=file的控件就    
是'multipart/form-data' 或者服务端或者你本身有自定义content-type的话 俩者不统一,浏览器才
会先发送options请求!

**建议你看看你们直接form-data接受的值格式的统一性**

405一般是前后台约定的请求方式不同,或者后台接口不支持你的请求类型吧。
如果跨域用的cors的话,可以让后台加个header就行

无法去掉 OPTIONS,但是可以用 Access-Control-Max-Age 缓存,一段时间内不需要重复发 OPTIONS。

注:Access-Control-Max-Age 只对完全相同的 url 有效,参数不同也无法缓存。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题