C#CookieContainer忽略了一个cookie

C#CookieContainer忽略了一个cookie,c#,cookies,httpclient,cookiecontainer,C#,Cookies,Httpclient,Cookiecontainer,我尝试自动登录到一个PHP生成的站点,该站点使用普通表单和cookies对用户进行身份验证 对于连接,我使用以下代码: SocketsHttpHandler socketHandler = new SocketsHttpHandler(); Uri baseUri = new Uri("mySite"); socketHandler.CookieContainer = new CookieContainer(); socketHandler.UseCookies = true

我尝试自动登录到一个PHP生成的站点,该站点使用普通表单和cookies对用户进行身份验证

对于连接,我使用以下代码:

SocketsHttpHandler socketHandler = new SocketsHttpHandler();
Uri baseUri = new Uri("mySite");
socketHandler.CookieContainer = new CookieContainer();
socketHandler.UseCookies = true;
socketHandler.AllowAutoRedirect = true;

//HttpClientHandler handler = new HttpClientHandler();
//handler.CookieContainer = new CookieContainer();

httpClient = new HttpClient(socketHandler);
httpClient.BaseAddress = baseUri;

try{
  (call login.php with PostAsync to login on the side)
  ...
  HttpResponseMessage response = await httpClient.GetAsync("main.php").ConfigureAwait(false);
  response.EnsureSuccessStatusCode();

  string responseText = await response.Content.ReadAsStringAsync();

  <Here I miss a cookie>

  ...
} catch(HttpRequestException e)
{
  Console.WriteLine(e.Message);
}
在main.php的GetAsync之后,我得到了大量新cookie(VS Debugger视图):

有人知道为什么cookie容器中没有添加cookie 3(sct_auth-hr_5a211a5ad7cd6ef0e05f18cef75d7c98)吗?其他cookie已正确添加

作为解决方法,我使用:

response.Headers.TryGetValues("Set-Cookie", out var setCookie);

手动查找Cookie并添加它。它可以工作,没有任何异常或其他可能阻止添加的事情。

您创建了两个CookieContainer实例。一个在Socketshtphandler上,一个在HttpClientHandler上。我将从创建一个且仅创建一个CookieContainer实例开始,并始终将该实例分配给需要CookieContainer的任何处理程序。请参阅示例:然后重新测试并检查问题是否持续存在。HttpClientHandler只是查找cookie问题的不同尝试的残余。删除这两条线路对主要问题没有影响。我想这是cookie名称领域的一个问题。除此之外,我看不出这五种饼干之间有任何其他主要区别。我对此感到困惑,在响应头中cookie是存在的。所以sid和login_实例被添加到CookieContainer?是的,foxy_项也有。问题似乎是cookie
sct_auth-hr_5a211a5ad7cd6ef0e05f18cef75d7c98没有设置路径,因此cookie将仅添加到与接收cookie的URL具有完全相同Uri的响应URL。它有点像这里描述的:。人们的共识似乎是这是故意的。
[0] "sid=qe1g1csvjc6h7075mlauv3pupf; path=/; HttpOnly"  string
[1] "sid=qe1g1csvjc6h7075mlauv3pupf; HttpOnly; Secure; SameSite=None"   string
[2] "sct_auth-hr_5a211a5ad7cd6ef0e05f18cef75d7c98=b3bcd0357d050f70be5d91e25d87d99f; HttpOnly; Secure; SameSite=None"    string
[3] "login_instance=hr; path=/; HttpOnly; Secure; SameSite=None"    string
[4] "foxy_items=%5B%5D; path=/; Secure; SameSite=None"  string
[5] "foxy_items=%5B%5D; path=/; Secure; SameSite=None"  string
response.Headers.TryGetValues("Set-Cookie", out var setCookie);