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

鸿蒙传说
TA贡献1865条经验 获得超7个赞
跨域访问的复杂请求先发起一个预检请求是跨域资源共享标准的规范之一,浏览器都得遵循。
要么改成简单请求,要么使用一个不遵循规范的浏览器,否则一定会发预检请求。

繁星coding
TA贡献1797条经验 获得超4个赞
这还得找后端配合...
在发生 CORS 请求时, 浏览器检测到跨域请求, 会自动发出一个OPTIONS
请求, 就是所谓的预检(preflight)请求. 当预检请求通过的时候, 才会把第二个请求(POST 之类)发送出去.
如题主所说,非简单请求每次会发出两次请求, 这会影响性能(也是题主所顾虑的). HTTP 协议增加了个响应头, 可以让我们在服务端设置Access-Control-Max-Age
来缓存预检请求, 比如说我们可以设置为 3600m。
也就是说一小时客户端只会在第一次的时候发送两个请求, 接下来一个小时内OPTIONS
请求就被缓存起来了.
添加回答
举报
0/150
提交
取消