根据上下文使用不安全的 cookie 和安全的 cookie

Use unsecured cookies and secure cookies depending on context

我们目前正在尝试转换一些遗留应用程序。在开发过程中,我们在安全 cookie 方面遇到了很多问题。虽然这肯定在我们的待办事项列表中,但它正在停止其他功能的工作。我们希望能够在我们的开发环境中设置 cookie,以便如果我们通过 HTTP 访问该站点,它会使用不安全的 cookie,但如果他们通过 HTTPS 访问该站点,它会使用安全的 cookie。我们正在尝试使用 IIS Url Rewrite 来完成此操作。我嘲笑了这个:

<rewrite>
    <outboundRules>
        <rule name="Enable secure Cookies {ProjectName}" preCondition="Missing Secure Cookies {ProjectName}">
            <match serverVariable="RESPONSE_Set_Cookie" pattern=".*" negate="false" />
            <action type="Rewrite" value="{R:0}; secure" />
            <conditions>
                <add input="{HTTPS}" pattern="^Off$" negate="true"/>
            </conditions>
        </rule>
        <rule name="Enable http only {ProjectName}" preCondition="Missing Http Only {ProjectName}">
            <match serverVariable="RESPONSE_Set_Cookie" pattern=".*" negate="false" />
            <action type="Rewrite" value="{R:0}; HttpOnly" />
            <conditions>
                <add input="{HTTPS}" pattern="^Off$" negate="true"/>
            </conditions>
        </rule>
        <preConditions>
            <preCondition name="Missing Secure Cookies {ProjectName}">
                <add input="{RESPONSE_Set_Cookie}" pattern="." />
                <add input="{RESPONSE_Set_Cookie}" pattern="; secure" negate="true" />
            </preCondition>
            <preCondition name="Missing Http Only {ProjectName}">
                <add input="{RESPONSE_Set_Cookie}" pattern="." />
                <add input="{RESPONSE_Set_Cookie}" pattern="; HttpOnly" negate="true" />
            </preCondition>
        </preConditions>
    </outboundRules>
</rewrite>

我将其添加到每个项目的每个 web.config 文件的 标记中(我实际上将 {ProjectName} 替换为项目名称,以便不同的项目具有唯一命名的规则和先决条件).不幸的是,从 HTTP 访问该站点时,我仍然获得安全 cookie。来自 HTTP 时如何取消规则?

或者,如果 HTTPS 关闭,是否可以删除安全和 httponly?

我的重写语法是正确的。问题是我错过了一个 client-side cookie,该 cookie 从不安全的上下文中创建为安全的并且导致了失败。如果其他人对同一站点中的安全和不安全 cookie 有类似的需求,我将留下这个问题。非常糟糕的产品实践,但非常适合开发!