Skip to content

Add support for partitioned cookies #2196

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

rawleyfowler
Copy link
Contributor

@rawleyfowler rawleyfowler commented Aug 28, 2024

Summary

Firefox is soon going to ignore third-party aka "foreign" aka SameSite: None

Motivation

These changes allow Mojolicious to handle the new "Partitioned" attribute, as well as adding the ability to set Partitioned on Mojolicious::Sessions cookies.

References

https://www.ietf.org/archive/id/draft-cutler-httpbis-partitioned-cookies-00.html

https://github.com/privacycg/CHIPS

fixes #2179

@rawleyfowler rawleyfowler changed the title Add partitioned cookies Add handling of partitioned cookies Aug 28, 2024
@kraih kraih requested review from a team, marcusramberg, kraih, christopherraa and Grinnz August 28, 2024 16:54
kraih
kraih previously requested changes Aug 28, 2024
Copy link
Member

@kraih kraih left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks like some values are not ordered alphabetically and documentation is missing.

@rawleyfowler rawleyfowler requested a review from kraih August 28, 2024 17:13
@mergify mergify bot dismissed kraih’s stale review August 28, 2024 17:13

Pull request has been modified.

@rawleyfowler
Copy link
Contributor Author

We could also mark this as experimental, though it is implemented in most browsers.

Copy link
Contributor

mergify bot commented Nov 22, 2024

This pull request is now in conflicts. Could you fix it @rawleyfowler? 🙏

Copy link
Contributor

mergify bot commented Nov 25, 2024

This pull request is now in conflicts. Could you fix it @rawleyfowler? 🙏

@rawleyfowler rawleyfowler changed the title Add handling of partitioned cookies Add support for partitioned cookies Nov 29, 2024
@rawleyfowler
Copy link
Contributor Author

rawleyfowler commented Apr 12, 2025

Plack recently merged this into Plack::Middleware::Session: plack/Plack-Middleware-Session#51 , hoping we can get this in soonish as I need it for work at some point...

@kraih kraih requested review from a team, kraih, jhthorsen and jberger April 13, 2025 00:02
@kraih
Copy link
Member

kraih commented Apr 13, 2025

Yes, since this is only a draft spec we have to mark it experimental.

Copy link

@Copilot Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR introduces support for partitioned cookies in Mojolicious to address upcoming browser changes regarding third‐party cookies.

  • Added a new partitioned flag in cookie tests, sessions, and cookie parsing.
  • Extended the Mojolicious::Sessions and Mojo::Cookie::Response modules to handle the Partitioned attribute.

Reviewed Changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 3 comments.

File Description
t/mojo/cookie.t Tests updated to validate the new Partitioned cookie behavior
lib/Mojolicious/Sessions.pm Sessions module updated to include partitioned cookie support
lib/Mojo/Cookie/Response.pm Cookie parsing/stringification enhanced for Partitioned flag

= Mojo::Cookie::Response->parse(
'foo="bar"; Domain=example.com; Partitioned; Path=/test; Max-Age=60; Expires=Thu, 07 Aug 2008 07:07:59 GMT; Secure;'
);
is $cookies->[0]->partitioned, 1, 'right paritionted value';
Copy link
Preview

Copilot AI Jun 16, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The test message contains a typo: 'paritionted' should be corrected to 'partitioned'.

Suggested change
is $cookies->[0]->partitioned, 1, 'right paritionted value';
is $cookies->[0]->partitioned, 1, 'right partitioned value';

Copilot uses AI. Check for mistakes.

my $bool = $sessions->partitioned;
$sessions = $sessions->partitioned($bool);

Partitioned flag, this is to be used in accordance to the CHIPS ammendment to RFC 6265.
Copy link
Preview

Copilot AI Jun 16, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The word 'ammendment' is misspelled; it should be 'amendment'.

Suggested change
Partitioned flag, this is to be used in accordance to the CHIPS ammendment to RFC 6265.
Partitioned flag, this is to be used in accordance to the CHIPS amendment to RFC 6265.

Copilot uses AI. Check for mistakes.

=head2 partitioned

my $partitioned = $cookie->partitioned;
$cookie = $cookie->parititoned(1);
Copy link
Preview

Copilot AI Jun 16, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The method call 'parititoned(1)' appears to be a typo; it should be 'partitioned(1)' to correctly set the flag.

Suggested change
$cookie = $cookie->parititoned(1);
$cookie = $cookie->partitioned(1);

Copilot uses AI. Check for mistakes.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good bot!

kraih
kraih previously approved these changes Jun 16, 2025
@kraih kraih dismissed their stale review June 16, 2025 16:10

Typos missed

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Feature request: Support session cookies with "Partitioned"
2 participants