明明跨域了,却没有发送options请求?

如题,我明明跨域向后台进行了请求,但是在network中却没有看大发送options请求,咋回事?

clipboard.png

阅读 12.7k
4 个回答

你可以把你的 请求的request 贴出来 或者 ajax的代码 看看是不是简单请求
其实跨域分为 简单跨域请求复杂跨域请求
简单跨域请求是不会发送options请求的
复杂跨域请求会发送一个预检请求options
1、请求方法不是GET/HEAD/POST
2、POST请求的Content-Type并非application/x-www-form-urlencoded, multipart/form-data, 或text/plain
3、请求设置了自定义的header字段

AJAX 跨域请求可以分为两种:简单请求与非简单请求

简单请求:

  • 请求方法为 HEADGETPOST 中的 1 种
  • 请求的 header 中没有自定义的请求头
  • Content-Type 为以下几种:application/x-www-form-urlencodedmultipart/form-datatext/plain

非简单请求:

  • header 中包含自定义请求头的 AJAX 请求
  • PUTDELETE 形式的 AJAX 请求
  • Content-Type 字段的类型是 application/json

当 AJAX 发出的是非简单请求时,浏览器才会发送预检(OPTIONS)请求,而且这个预检请求在服务端是可以设置缓存时间的。也就是第一次访问时才会发送预检请求,在缓存的时间内再次请求是不会发送预检请求的。

你可以看一下你发送的 AJAX 请求是哪种类型的请求。

新手上路,请多包涵

1.0 改成get的请求吧!2.0 post 要设置header字段!

需要后端开启接受options请求即可

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