猿问

ajax预请求

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

慕尼黑8549860
浏览 1045回答 3
3回答

鸿蒙传说

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

繁星coding

这还得找后端配合...在发生 CORS 请求时, 浏览器检测到跨域请求, 会自动发出一个OPTIONS请求, 就是所谓的预检(preflight)请求. 当预检请求通过的时候, 才会把第二个请求(POST 之类)发送出去.如题主所说,非简单请求每次会发出两次请求, 这会影响性能(也是题主所顾虑的). HTTP 协议增加了个响应头, 可以让我们在服务端设置Access-Control-Max-Age来缓存预检请求, 比如说我们可以设置为 3600m。也就是说一小时客户端只会在第一次的时候发送两个请求, 接下来一个小时内OPTIONS请求就被缓存起来了.
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答