为何HTML本地文件访问需认证图片未复用会话Cookie?
问题原因解析
这是浏览器的同源策略与Cookie作用范围规则共同导致的,具体逻辑如下:
- 本地HTML文件的访问协议是
file://,它不属于任何域名范畴(不满足同源策略里的「协议、域名、端口」三要素),属于无源环境。 - 你登录ci-system.net时,服务器设置的会话Cookie是绑定到ci-system.net域名的,浏览器只会在请求该域名下的资源时,自动携带对应的Cookie。
- 当本地
file://协议的页面请求ci-system.net的图片时,浏览器判定当前页面的源(file://)和图片所在的源(https://ci-system.net)完全不同,出于安全规则,不会自动携带ci-system.net的会话Cookie。 - 直接在浏览器地址栏输入图片URL时,请求的源就是ci-system.net,浏览器会自动带上已有的会话Cookie,因此无需重新认证;而本地页面的请求不带Cookie,服务器就会触发认证流程——不过因为你在同一浏览器会话里已有有效的认证上下文,所以无需再输入账号密码就能通过认证,但本质上每张图片的请求都单独走了一遍认证校验。
内容的提问来源于stack exchange,提问作者Sirish Kumar Bethala
相关产品推荐
相关产品推荐

