为什么我们的HTTP有3个set-cookie?

时间:2018-07-04 15:12:28

标签: http curl http-headers

我尝试过

curl -i -H "Accept: application/json" -H "Content-Type: application/json" -X GET https://sportnet.rtl.hr/sportnetklub/kosarka-2/

我正在尝试了解set-cookie。

HTTP/1.1 200 OK
Date: Wed, 04 Jul 2018 14:59:45 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
Set-Cookie: __cfduid=dcf1d1aaf0cecdf86c66d953a2ad6c4dd1530716385; expires=Thu, 04-Jul-19 14:59:45 GMT; path=/; domain=.rtl.hr; HttpOnly
Cache-Control: private
Vary: Accept-Encoding
Set-Cookie: ASP.NET_SessionId=nphhhutdgvl1yvjvzt3dhupw; path=/; HttpOnly
X-AspNetMvc-Version: 5.2
X-AspNet-Version: 4.0.30319
Set-Cookie: sportnet_klub=; expires=Sun, 24-Jun-2018 15:00:07 GMT; path=/
X-Powered-By: ASP.NET
Expect-CT: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
Server: cloudflare
CF-RAY: 435275230b1f7c60-BEG

为什么我们得到多个值? 客户端操作系统是否会影响HTTP REQUEST-RESPONSE?

2 个答案:

答案 0 :(得分:2)

  

为什么我们会得到多个值?

在不了解要定位的服务器(和代理)的情况下,很难回答原因。据我了解,这就是这些cookie的含义:

  • __cfduid是Cloulflare cookie,用于识别共享IP地址后面的各个客户端,并基于每个客户端应用安全设置。
  • ASP.NET_SessionId是.NET应用程序中使用的cookie,用于标识服务器上的用户会话。
  • sportnet_klub似乎是特定于应用程序的cookie。

根据RFC 6265,在响应中包含多个Set-Cookie标头是完全有效的:

  

原始服务器可以在单个响应中包含多个Set-Cookie头字段。 [...]

     

原始服务器不应将多个Set-Cookie头字段折叠为一个头字段。折叠HTTP标头字段的常用机制可能会更改Set-Cookie标头字段的语义,因为%x2C使用,Set-Cookie)字符会与冲突这样的折叠。

答案 1 :(得分:0)

您请求的服务器将要求您根据某些cookie设置它们。这些可以用于会话身份验证,对于服务器登录系统正常运行至关重要,或者您可以想到的任何其他用途。因此,“为什么”很难说,它实际上取决于您与之通信的服务器以及它们使用cookie的目的。