Request.Cookies 页面由第三方网站初始化时无法正常工作

Request.Cookies not working when the page was initialized by a third party website

我已将我网站所有网页的 menu.asp 包含在 header 中:

<!--include file="menu.asp"-->

并且有一个代码可以检查用户是否已经登录

<%
if request.cookies("user")<>"" then 
   response.write request.cookies("user")
else
   response.write "sign in"
end if
%>

上面的代码在所有页面上都能正常工作,除非用户从银行付款返回。银行网站将付款结果(可能设置一些 http headers)发布到我网站的特殊 URL,我会显示一条感谢消息。除了这个特殊页面中的 request.cookies("user") returns null 之外,一切正常。我检查了控制台,cookie 用户存在,如果我之后浏览其他页面,它可以在其他页面上工作。

页面header由第三方网站设置时是否有一些特殊情况?

浏览器更改了 cookie 的默认值,因此它们不再默认发送来自第三方站点的请求以防止 CSRF 攻击。

阅读本文了解更多详情:https://web.dev/samesite-cookies-explained/

您可以通过在设置 cookie 时添加 SameSite=None 使它像以前一样工作,这样浏览器仍然会像以前一样在来自第三方网站的请求中包含 cookie。然而,这确实意味着可以发出任何包含 cookie 的请求(就像以前一样),因此如果有人登录时有恶意方,您的应用程序容易受到攻击。因此,如果您真的想这样做,请仔细考虑,或者如果有更好的方法来处理这个问题。