Cookies ASP的经典用法;SameSite“;在饼干上

Cookies ASP的经典用法;SameSite“;在饼干上,cookies,asp-classic,Cookies,Asp Classic,我们使用经典ASP通过Response.cookies(CookieName)构建cookie。我们如何将“SameSite”设置为无?试试这个(您需要安装URLRewite模块)。您还需要使用https协议(SameSite仅在还包括Secure的情况下有效,并且如果不使用https协议,您不能包括Secure)HttpOnly也应该始终使用,但是如果您的站点上有一些JavaScript代码需要读取cookie,HttpOnly将阻止这种情况 您可能还需要将“HTTP_COOKIE”添加到UR

我们使用经典ASP通过Response.cookies(CookieName)构建cookie。我们如何将“SameSite”设置为无?

试试这个(您需要安装URLRewite模块)。您还需要使用https协议(
SameSite
仅在还包括
Secure
的情况下有效,并且如果不使用https协议,您不能包括
Secure
HttpOnly
也应该始终使用,但是如果您的站点上有一些JavaScript代码需要读取cookie,
HttpOnly
将阻止这种情况

您可能还需要将“HTTP_COOKIE”添加到URL重写下IIS中的“允许的服务器变量”中。但我认为这只是为了阅读收到的饼干

编辑:经过测试,效果完美

注意:如果您已经在使用
Response.Cookies(“CookieName”).Secure=True
,它会将
Secure
添加到响应头值中两次(除非您从action rewrite值中删除
Secure
),包含两次应该不是问题,但有些浏览器可能会对这类内容过于挑剔,尤其是Chrome,因为谷歌继续以更严格的cookies规则发布越来越多的更新

httpProtocol>customHeaders
部分是完全可选的,但它将为您的站点增加更多安全性

web.config

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <rewrite>
        <outboundRules>
            <rule name="SameSite rewrite">
                <match serverVariable="RESPONSE_Set_Cookie" pattern="(.*)=(.*)" negate="false" />
                <action type="Rewrite" value="{R:1}={R:2}; SameSite=None; HttpOnly; Secure" />
            </rule>     
        </outboundRules>
    </rewrite>
    <httpProtocol>
      <customHeaders>
        <add name="X-Frame-Options" value="SAMEORIGIN" />
        <add name="X-Content-Type-Options" value="nosniff" />
        <add name="X-XSS-Protection" value="1; mode=block" />
        <add name="Referrer-Policy" value="strict-origin" />
        <add name="Strict-Transport-Security" value="max-age=31536000" />
      </customHeaders>
    </httpProtocol>
  </system.webServer>
</configuration>


这应该会有帮助,这是我为设置自定义cookie编写的代码。SameSite设置是一个选项(默认无)。谢谢Adam。因此,本质上唯一的选择是使用Response.AddHeader创建cookie?经典ASP已有20年历史,
Response.Cookies
非常有限,但
Response.AddHeader
可以让您完全控制响应头的内容。要知道,在我采用的系统中,这可能是一个相当长的重写过程。使用Response.Cookies创建cookie后,是否有任何方法可以编辑cookie以设置SameSite或no go?您可以使用web.config自动添加它,但我没有相应的代码。谢谢Adam,这就完成了,然而,我希望在我的ASP代码中有这样一个选项,这样我就可以添加一些额外的逻辑来检查数据库中与系统相关的设置。我现在还发现iOS不支持这个,设置这个会破坏iOS。这似乎不是谷歌深思熟虑的更新??还有,为什么他们不允许某种形式的“白名单”,而不是强迫所有人一起禁用它