HttpOnlyをCookieに追加する例を数多く見つけましたが、それが機能せず、理由がわかりません。私が見つけたすべての例は同じであり、私が見つけた投稿の1つからこれをコピーしました。 IIS 7.0で.NET3.5を使用しています。うまくいけば、誰かが私が間違っていることを教えてくれますか?ありがとう
<rewrite>
<outboundRules>
<rule name="Add HttpOnly" preCondition="No HttpOnly">
<match serverVariable="RESPONSE_Set_Cookie" pattern=".*" negate="false" />
<action type="Rewrite" value="{R:0}; HttpOnly" />
<conditions>
</conditions>
</rule>
<preConditions>
<preCondition name="No HttpOnly">
<add input="{RESPONSE_Set_Cookie}" pattern="." />
<add input="{RESPONSE_Set_Cookie}" pattern="; HttpOnly" negate="true" />
</preCondition>
</preConditions>
</outboundRules>
</rewrite>
[〜#〜]更新[〜#〜]
トレースをオンにする方法を理解したところ、preConditionが個々のCookieではなく、すべてのCookieを全体として見ていることがわかりました。
だから評価する代わりに
Set-Cookie: myC5=we have S Cookie; path=/; secure
Set-Cookie: myC6=we have S Cookie; path=/; secure
Set-Cookie: myC7=we have S Cookie; path=/; secure; HttpOnly
評価中です
myC5=we have S Cookie; path=/; secure,myC6=we have S Cookie; path=/; secure,myC7=we have S Cookie; path=/; secure; HttpOnly
文字列全体が;を持っているのでその中のHttpOnlyでは、preConditionは失敗します。
どうすればこれを乗り越えることができますか?何か案は?
私はついにこれに合格したので、これに遭遇するかもしれない他の人のために投稿したかった。 preConditionsを削除し、条件を使用しました。次に、バックリファレンスを使用して単一のCookieを取得する必要がありました。
<rewrite>
<outboundRules>
<rule name="Add HttpOnly">
<match serverVariable="RESPONSE_Set_Cookie" pattern=".*" />
<conditions>
<add input="{R:0}" pattern="; HttpOnly" negate="true" />
</conditions>
<action type="Rewrite" value="{R:0}; HttpOnly" />
</rule>
<rule name="Add Secure">
<match serverVariable="RESPONSE_Set_Cookie" pattern=".*" />
<conditions>
<add input="{R:0}" pattern="; Secure" negate="true" />
</conditions>
<action type="Rewrite" value="{R:0}; Secure" />
</rule>
</outboundRules>
</rewrite>
これが将来誰かに役立つことを願っています。