Safari在自动填充的网址栏上发送获取Ajax请求

问题描述 投票:0回答:1

我的客户端react应用程序正在http://localhost:3000上运行,而我的节点js服务器正在http://localhost:8080上运行。加载客户端URL时,它将发送GET / auth / user 304 0.494 ms--提取ajax请求以加载用户(在react componentDidMount函数上)。问题是,当在Safari浏览器中键入“ l”并且url自动填充为“ http://localhost:3000”时,在我什至不按Enter键之前以及在客户端页面之前,已确认我的服务器收到与GET / auth / user相同的请求。已加载。在Chrome中没有。当用户未访问页面而仅键入其URL的一部分时,为什么Safari浏览器会发送ajax请求?这是设计行为吗?

ajax safari fetch
1个回答
0
投票

作为跟踪原因的6个小时的结果。我发现Safari实现的缓存ajax请求与其他Web浏览器不同。当Safari的客户端url数据记录了向外部api请求ajax的记录时,Safari会在用户访问客户端url页面(键入url并自动建议)之前发送相同的ajax请求,以检查响应是否为200(不同)或304(相同)。如果响应为304(相同)并且客户端页面已实际加载,则Safari不会再次发送ajax请求。这在用户登录过程中可能非常烦人,因为在实际身份验证过程完成之前加载了用户数据(用户数据响应为304),因此在对浏览器进行身份验证时,客户端应用程序仍未经过身份验证。我找到的解决方案是在获取用户数据('$ {root} / auth / user?'+'nocache = new Date.getTime()')时添加一个额外的查询参数,以防止在Safari浏览器中缓存AJAX。希望它可以帮助面临相同问题的人。

© www.soinside.com 2019 - 2024. All rights reserved.