deno_std icon indicating copy to clipboard operation
deno_std copied to clipboard

[http/cookie] Add support for adding "Cookie" header

Open karelklima opened this issue 1 year ago • 3 comments

Is your feature request related to a problem? Please describe.

I am trying to send a fetch request to a server from Deno and memorize cookies set by the server in the response.

The standard library is missing a function to assign a Cookie header to the Headers object. There are functions to read Cookie headers and read and assign Set-Cookie headers, but there is currently no way to set Cookie headers.

Describe the solution you'd like

A setCookie(headers: Headers, cookie: Cookie) method could set a Cookie header. There is one issue though, a method with this name already exists and it sets the Set-Cookie header.

There is a naming inconsistency in the cookie standard library:

  • getCookies() - returns all Cookie headers
  • getSetCookies() - returns all Set-Cookie headers
  • setCookie(...) - currently sets a Cookie header, but should set the Set-Cookie header should the naming of functions be consistent.

Describe alternatives you've considered

I have tried to set the Cookie header directly, but it is not convenient at the moment, as there is no way to easily reuse the Cookie parsed object from the getSetCookies() method and use that as a value to set cookie in headers directly. It would be possible with the toString method, which is private to the cookies.ts module.

I'll be happy to send a PR once it is decided whether to implement this and how to solve the naming issue.

karelklima avatar Apr 20 '23 19:04 karelklima

This seems reasonable. Not sure what we should name the current setCookie header. setSetCookie doesn't really roll off the tongue.

lino-levan avatar Jul 13 '23 03:07 lino-levan

How about setResponseCookie() for setting Set-Cookie header and setRequestCookie() for setting Cookie as Set-Cookie is a response header while Cookie is a request header?

babiabeo avatar Jan 29 '24 11:01 babiabeo

How about setResponseCookie() for setting Set-Cookie header and setRequestCookie() for setting Cookie as Set-Cookie is a response header while Cookie is a request header?

I like that. Perhaps, we could also add getResponseCookie() and getRequestCookie(). What do we think?

iuioiua avatar Jan 31 '24 00:01 iuioiua