为了账号安全,请及时绑定邮箱和手机立即绑定

ajax预请求

ajax预请求

慕尼黑8549860 2019-03-06 17:15:10
ajax请求如果加入自定义请求头, 就会变成复杂请求? 浏览器第一次会先发起预请求, 然后才会发起第二次真正的请求, 如何去除这个预请求?
查看完整描述

3 回答

?
鸿蒙传说

TA贡献1865条经验 获得超7个赞

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

查看完整回答
反对 回复 2019-03-18
?
繁星coding

TA贡献1797条经验 获得超4个赞

这还得找后端配合...

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

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

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


查看完整回答
反对 回复 2019-03-18
  • 3 回答
  • 0 关注
  • 1044 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号