Javascript 当cookie通过http头发送到浏览器时,它会被添加到客户端浏览器吗?

Javascript 当cookie通过http头发送到浏览器时,它会被添加到客户端浏览器吗?,javascript,php,api,http-headers,httpcookie,Javascript,Php,Api,Http Headers,Httpcookie,我正在尝试与API建立连接。当我调用此API的方法时,它会通过HTTP头发送cookie值进行响应 这个头会自动添加到客户端“我的浏览器”中吗?还是我必须首先解析请求并使用setCookie创建cookie 如果它没有自动添加cookies,有没有办法这样做?它将由您的http客户端自动处理(您不需要手动设置)。 服务器应使用设置的Cookie头(而不是Cookie)进行响应,然后客户端将保存该Cookie,并在下一个请求时发送它 设置cookie Cookie是使用HTTP set Cooki

我正在尝试与API建立连接。当我调用此API的方法时,它会通过HTTP头发送cookie值进行响应

这个头会自动添加到客户端“我的浏览器”中吗?还是我必须首先解析请求并使用
setCookie
创建cookie


如果它没有自动添加cookies,有没有办法这样做?

它将由您的http客户端自动处理(您不需要手动设置)。 服务器应使用设置的Cookie头(而不是Cookie)进行响应,然后客户端将保存该Cookie,并在下一个请求时发送它

设置cookie

Cookie是使用HTTP set Cookie标头设置的,该标头在HTTP响应中发送。此标头指示浏览器存储cookie并在将来的请求中将其发送回服务器(当然,如果浏览器不支持cookie或已禁用cookie,则会忽略此标头)

例如,浏览器将其第一个请求发送到www.example.org网站的主页:

GET /index.html HTTP/1.1
Host: www.example.org
...
服务器使用两个设置的Cookie头进行响应:

HTTP/1.0 200 OK
Content-type: text/html
Set-Cookie: theme=light
Set-Cookie: sessionToken=abc123; Expires=Wed, 09 Jun 2021 10:18:14 GMT
...
服务器的HTTP响应包含网站主页的内容。但它也指示浏览器设置两个cookie。第一个“主题”被认为是“会话”cookie,因为它没有Expires或Max Age属性。会话cookie通常在浏览器关闭时由浏览器删除。第二个“sessionToken”包含一个“Expires”属性,它指示浏览器在特定日期和时间删除cookie

接下来,浏览器发送另一个请求,以访问网站上的spec.html页面。此请求包含一个Cookie头,其中包含服务器指示浏览器设置的两个Cookie

GET /spec.html HTTP/1.1
Host: www.example.org
Cookie: theme=light; sessionToken=abc123
...
这样,服务器就知道此请求与前一个请求相关。服务器将通过发送请求的页面进行应答,并可能使用Set Cookie头添加其他Cookie

服务器可以通过在响应页面请求时包含一个Set cookie头来修改cookie的值。然后,浏览器将旧值替换为新值

cookie的值可以由任何可打印的ASCII字符(!至~,unicode\u0021至\u007E)组成,不包括,和;并且不包括空格。cookie的名称不包括相同的字符以及=,因为这是名称和值之间的分隔符。cookie标准RFC2965更具限制性,但不由浏览器实现

术语“cookie crump”有时用来指cookie的名称-值对

Cookie还可以通过在浏览器中运行的脚本语言(如JavaScript)进行设置。在JavaScript中,object document.cookie用于此目的。例如,指令document.cookie=“temperature=20”创建一个名为“temperature”、值为“20”的cookie


请参见

是,cookie将添加到
文档中。cookie
,除非发送cookie时设置了
httponly
参数。

感谢您提供的详细信息。为了确保我完全理解该行为,如果API向我发送一个过期时间为1小时的cookie,并且用户关闭浏览器,那么在30分钟后,用户将再次打开它。当再次调用API时,标题是否会自动从客户端发送到服务器,或者我是否必须确保每次手动将标题添加到cURL请求中,以便发送?是的,它将自动删除。因此,请求将不包含过期的cookie。但它会自动添加到每个请求中,直到过期,还是每次我都必须使用
CURLOPT_HTTPHEADER
将其添加到cURL请求中“因此我不必在内部管理来自/到API的cookie”?出于某种原因,它会自动添加到所有请求中,如果我没有手动将标题添加到
CURLOPT_HTTPHEADER
中,API将不会收到标题。为什么会导致这个问题?是否有一个我必须设置的选项,以便cURL通过HTTP头自动包含set头?我厌倦了使用curl_setopt($ch,CURLOPT_COOKIE,true)但它没有自动包含标题