Cookie “PHPSESSID”会被视为跨站点cookie,因为方案不匹配,针对<file>的情况即将到来。

52
我刚刚注意到我的控制台里被这个警告弄得一塌糊涂,每一个链接的资源都会出现这个警告,包括所有引用的CSS文件、JavaScript文件、SVG图片以及甚至是JSON响应中的Ajax调用的URL。但是不包括图片。
例如,在 style.css 文件的情况下,警告会显示如下内容:
Cookie “PHPSESSID” will be soon treated as cross-site cookie against “http://localhost/style.css” because the scheme does not match.
但是,"scheme" 没有匹配什么呢?文档吗?因为它的确匹配。
我的站点 URL 是 http://localhost/。 网站和其资源都在 http 上(localhost 上没有 https)。 域名肯定不会不同,因为所有东西都是相对于域名来引用的(也就是说文件路径以斜杠开头 href=" /style.css ")。
网络检查器只报告了绿色的 200 OK 响应,显示一切正常。
只有 Mozilla Firefox 才会抱怨这个问题。Chromium 似乎并没有关注任何事情。我没有浏览器插件。这些警告似乎源自浏览器,每个警告都链接到 Debugger 中对应的文件源。
为什么会出现这种情况呢?

8
在Firefox浏览器中,打开设置,搜索“cookies”,点击“管理数据”,搜索“localhost”,选择“localhost”,点击“删除所选”... 这对我很有用... - Elmar Zander
5个回答

29

我也遇到了同样的问题。问题在于Firefox会一直显示在同一URL下(“localhost:端口号”),不同网站的Cookie都存储在浏览器内存中。

在我的情况下,我配置了两个项目在http://localhost:62601上运行。当我运行第一个项目时,它会将Cookie保存在浏览器内存中。当我运行具有相同URL的第二个项目时,Cookie也可以在该项目的控制台中使用。

你可以做的是从浏览器中删除所有的Cookie。


1
我从VirtualBox运行多个开发项目,通过在hosts文件中定义的域名访问相同的IP地址。删除cookies似乎使消息消失了。 - Aufgeschissener Kunde
您还可以前往“开发工具”->“存储”,选择“localhost”域和“/”路径的行,然后右键单击并删除所选 cookie。 - drugan

27

@Paramjot Singh的回答是正确的,也让我走到了需要去的地方。我也浪费了很多时间盯着那些警告。

但是稍微澄清一下,您不必删除所有Cookies来解决此问题。在Firefox中,您可以删除单个站点cookie,这将保留您在其他站点上的设置。

要这样做,请单击右上角的汉堡菜单,然后选择选项->隐私和安全设置->隐私和安全

从这里开始,向下滚动大约一半,并找到Cookies和站点数据。 不要点击清除数据。 相反,点击管理数据。 然后搜索您正在出现提示的站点,突出显示它,然后删除所选内容

很简单,我知道,但我第一次犯了清除所有东西的错误-也许这会防止别人犯同样的错误。


20
警告是因为根据MDN web docs的说法:
引用: 与Cookie SameSite属性相关的标准最近发生了变化,即: 如果未指定SameSite,则发送cookie的行为为SameSite=Lax。以前默认情况下,所有请求都会发送cookie。 现在,具有SameSite=None的cookie还必须指定Secure属性(它们需要安全上下文/HTTPS)。
这表明,为了允许通过设置SameSite=None Secure来跨站点使用cookie,需要安全上下文/HTTPS。
根据Mozilla的说法,您应该明确地传达cookie的预期SameSite策略(而不是依赖浏览器自动应用SameSite=Lax),否则您可能会收到如下警告:
引用: Cookie“myCookie”的“SameSite”策略设置为“Lax”,因为缺少“SameSite”属性,而“SameSite=Lax”是此属性的默认值。
简单删除本地主机cookie并不能真正解决问题。解决方案是正确设置由服务器设置的cookie的SameSite属性,并在需要时使用HTTPS。
Firefox并不是唯一进行这些更改的浏览器。显然,我正在使用的Chrome版本(84.0.4147.125)已经实施了这些更改,因为我在控制台中得到了这条消息: enter image description here 之前提到的MDN文章Mike Conca的这篇文章提供了有关SameSite cookie行为更改的重要信息。

3

假设您正在使用WAMP或LAMP等工具。您首先需要做的是在WAMP上启用ssl,因为您会发现许多引用都说您需要调整cookie设置为SameSite=None; Secure。这意味着您的本地连接是安全的。此链接中有说明https://articlebin.michaelmilette.com/how-to-add-ssl-https-to-wampserver/以及一些YouTube视频。 需要注意的重要事项是,在创建SSL证书时,应使用sha256编码,因为sha1现已弃用,并将再次引发警告。 关于SameSite cookie有一个很好的解释,可以查看https://web.dev/samesite-cookies-explained/ 我也曾遇到同样的问题,并通过确保启用了Apache 2.4头文件模块,然后添加了一行代码来解决它。

Header always edit Set-Cookie ^(.")$ $1;HttpOnly;Secure

我曾花费大量时间盯着检查器中相同的警告内容,直到意识到cookie一直存在且需要清除。

显然,Chrome原本会立即引入新规则,但由于Covid-19的影响,许多网站可能会在人们居家工作期间出现故障。主要浏览器正在共同解决这个SameSite属性问题,因此很快就会生效。


0
在一些PHP代码中使用类似这样的东西:
session_start([
'cookie_samesite' => 'Lax',]);

根据目前的写法,你的回答不够清晰。请编辑以添加更多细节,以帮助他人理解这如何回答所提出的问题。你可以在帮助中心找到更多关于如何撰写好的回答的信息。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接