ajax请求如果加入自定义请求头, 就会变成复杂请求? 浏览器第一次会先发起预请求, 然后才会发起第二次真正的请求, 如何去除这个预请求?
如果你是跨域了并且是非简单请求,根据浏览器的实现就一定会发出这个预检请求
有没有办法禁止?
没有!!!
不想发出这个请求 就避免上面说的两个条件
什么?领导不信?? 贴个链接给你
https://stackoverflow.com/que...
上面的链接有讲到 跨域这个条件不是必须,这个没测试过 初步测试 跨域条件还是必须的
这还得找后端配合...
在发生 CORS 请求时, 浏览器检测到跨域请求, 会自动发出一个OPTIONS
请求, 就是所谓的预检(preflight)请求. 当预检请求通过的时候, 才会把第二个请求(POST 之类)发送出去.
如题主所说,非简单请求每次会发出两次请求, 这会影响性能(也是题主所顾虑的). HTTP 协议增加了个响应头, 可以让我们在服务端设置Access-Control-Max-Age
来缓存预检请求, 比如说我们可以设置为 3600m。
也就是说一小时客户端只会在第一次的时候发送两个请求, 接下来一个小时内OPTIONS
请求就被缓存起来了.
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答5.1k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
预检请求? 上代码!