酢酸先生と Slack でいろいろお話しながら調査してたら、今さっき見つかりました。
結論から言うと、
HttpOnly 属性の付いた Cookie は CookieContainer から取得できなくなった、
です。
簡単な経緯を説明しますと、まず従来世の中に回っている System.Net.Http.HttpClient は System.Net.HttpWebRequest で実装されていたものでした。しかし、UWP 版からは Windows.Web.Http.HttpClient での実装に変更されています (HttpClientHandler の実装が今までとは全くの別物になっています)。 ここまでは特に問題がないです。
しかし、新 System.Net.Http.HttpClient での ProcessResponseCookies に問題があります。従来挙動と違い、HttpOnly 属性のついたものははじく実装になりました。
// System.Net.Http.HttpClientHandler
private void ProcessResponseCookies(HttpResponseMessage response)
{
IEnumerable<string> enumerable;
if (this.UseCookies && response.Headers.TryGetValues("Set-Cookie", out enumerable))
{
using (IEnumerator<string> enumerator = enumerable.GetEnumerator())
{
while (enumerator.MoveNext())
{
string current = enumerator.get_Current();
if (!string.IsNullOrWhiteSpace(current))
{
try
{
CookieContainer expr_42 = new CookieContainer();
expr_42.SetCookies(response.RequestMessage.RequestUri, current);
IEnumerator enumerator2 = expr_42.GetCookies(response.RequestMessage.RequestUri).GetEnumerator();
try
{
while (enumerator2.MoveNext())
{
Cookie cookie = (Cookie)enumerator2.get_Current();
if (!cookie.HttpOnly)
{
this.CookieContainer.Add(response.RequestMessage.RequestUri, cookie);
}
}
(略)
このコードにおける HttpResponseMessage は内部の HttpHandlerToFilter にて適切に変換 (Windows.Web.Http.HttpResponseMessage から System.Net.Http.HttpResponseMessage) され、そのあとのクッキー処理になっています。
ということで、取得できなくなってます。バグというより仕様変更というのが適切でしょう。
以上です。