ajax预请求

ajax请求如果加入自定义请求头, 就会变成复杂请求? 浏览器第一次会先发起预请求, 然后才会发起第二次真正的请求, 如何去除这个预请求?

阅读 3.2k
5 个回答

预检请求? 上代码!

你是说Options

如果你是跨域了并且是非简单请求,根据浏览器的实现就一定会发出这个预检请求
有没有办法禁止?
没有!!!
不想发出这个请求 就避免上面说的两个条件
什么?领导不信?? 贴个链接给你

https://stackoverflow.com/que...

上面的链接有讲到 跨域这个条件不是必须,这个没测试过 初步测试 跨域条件还是必须的

跨域访问的复杂请求先发起一个预检请求是跨域资源共享标准的规范之一,浏览器都得遵循。
要么改成简单请求,要么使用一个不遵循规范的浏览器,否则一定会发预检请求。

这还得找后端配合...

在发生 CORS 请求时, 浏览器检测到跨域请求, 会自动发出一个OPTIONS请求, 就是所谓的预检(preflight)请求. 当预检请求通过的时候, 才会把第二个请求(POST 之类)发送出去.

如题主所说,非简单请求每次会发出两次请求, 这会影响性能(也是题主所顾虑的). HTTP 协议增加了个响应头, 可以让我们在服务端设置Access-Control-Max-Age来缓存预检请求, 比如说我们可以设置为 3600m。

也就是说一小时客户端只会在第一次的时候发送两个请求, 接下来一个小时内OPTIONS请求就被缓存起来了.

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