denoland / std

The Deno Standard Library
https://jsr.io/@std
MIT License
3.23k stars 622 forks source link

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

Open karelklima opened 1 year ago

karelklima commented 1 year ago

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:

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.

lino-levan commented 1 year ago

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

babiabeo commented 10 months ago

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?

iuioiua commented 10 months ago

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?