为何Safari登录时REQUEST_URI返回不存在的login.css.map文件?
问题分析与解决方案
核心原因
- Safari自动请求CSS源映射:Safari默认启用了CSS Source Maps功能,只要页面里出现对
login.css的引用(哪怕这个文件实际不存在),浏览器就会自动发起对login.css.map的请求。 - 路由未拦截静态资源请求:你的MVC框架入口(index.php)可能接收了所有HTTP请求,包括这类静态资源的请求,导致登录控制器被触发时,把这个
/assets/styles/login.css.map的URI存进了会话。 - 请求时序覆盖:Safari加载页面时,可能先发起了这个map文件的请求,刚好在用户登录操作之前触发了会话URI的存储,覆盖了原本的首页路径。
解决步骤
- 检查页面CSS引用:搜索前端代码里有没有
<link rel="stylesheet" href="/assets/styles/login.css">这类无效引用,删掉或者修正路径。 - 优化路由规则:在MVC调度器里添加规则,优先处理静态资源后缀的请求(比如
.css、.js、.map、.png等),直接返回404或者跳过登录控制器的会话存储逻辑,避免静态请求干扰登录流程。 - 调整会话存储逻辑:不要在所有请求都存储
REQUEST_URI,只在用户访问需要登录的页面且未登录时才记录,比如先判断当前请求不是静态资源,且用户未登录,再执行URI存储操作。 - 临时排查验证:打开Safari开发者工具,关闭「Enable CSS Source Maps」选项,测试登录流程是否恢复正常,确认问题根源是源映射自动请求。
内容的提问来源于stack exchange,提问作者RicardoF1RST
相关产品推荐
相关产品推荐

