77
77
import org .eclipse .jetty .server .handler .StatisticsHandler ;
78
78
import org .eclipse .jetty .session .DefaultSessionCache ;
79
79
import org .eclipse .jetty .session .FileSessionDataStore ;
80
+ import org .eclipse .jetty .session .SessionConfig ;
80
81
import org .eclipse .jetty .util .Callback ;
81
82
import org .eclipse .jetty .util .resource .CombinedResource ;
82
83
import org .eclipse .jetty .util .resource .Resource ;
@@ -237,11 +238,17 @@ private Handler addHandlerWrappers(Handler handler) {
237
238
handler = applyWrapper (handler , JettyHandlerWrappers .createServerHeaderHandlerWrapper (getServerHeader ()));
238
239
}
239
240
if (!CollectionUtils .isEmpty (getCookieSameSiteSuppliers ())) {
240
- handler = applyWrapper (handler , new SuppliedSameSiteCookieHandlerWrapper (getCookieSameSiteSuppliers ()));
241
+ handler = applyWrapper (handler ,
242
+ new SuppliedSameSiteCookieHandlerWrapper (getSessionCookieName (), getCookieSameSiteSuppliers ()));
241
243
}
242
244
return handler ;
243
245
}
244
246
247
+ private String getSessionCookieName () {
248
+ String name = getSession ().getCookie ().getName ();
249
+ return (name != null ) ? name : SessionConfig .__DefaultSessionCookie ;
250
+ }
251
+
245
252
private Handler applyWrapper (Handler handler , Handler .Wrapper wrapper ) {
246
253
wrapper .setHandler (handler );
247
254
return wrapper ;
@@ -779,9 +786,12 @@ private static class SuppliedSameSiteCookieHandlerWrapper extends Handler.Wrappe
779
786
780
787
private static final SetCookieParser setCookieParser = SetCookieParser .newInstance ();
781
788
789
+ private final String sessionCookieName ;
790
+
782
791
private final List <CookieSameSiteSupplier > suppliers ;
783
792
784
- SuppliedSameSiteCookieHandlerWrapper (List <CookieSameSiteSupplier > suppliers ) {
793
+ SuppliedSameSiteCookieHandlerWrapper (String sessionCookieName , List <CookieSameSiteSupplier > suppliers ) {
794
+ this .sessionCookieName = sessionCookieName ;
785
795
this .suppliers = suppliers ;
786
796
}
787
797
@@ -793,7 +803,7 @@ public boolean handle(Request request, Response response, Callback callback) thr
793
803
794
804
private class SuppliedSameSiteCookieResponse extends Response .Wrapper {
795
805
796
- private HttpFields .Mutable wrappedHeaders ;
806
+ private final HttpFields .Mutable wrappedHeaders ;
797
807
798
808
SuppliedSameSiteCookieResponse (Request request , Response wrapped ) {
799
809
super (request , wrapped );
@@ -825,14 +835,21 @@ public HttpField onAddField(HttpField field) {
825
835
826
836
private HttpField onAddSetCookieField (HttpField field ) {
827
837
HttpCookie cookie = setCookieParser .parse (field .getValue ());
828
- SameSite sameSite = (cookie != null ) ? getSameSite (cookie ) : null ;
838
+ if (cookie == null || isSessionCookie (cookie )) {
839
+ return field ;
840
+ }
841
+ SameSite sameSite = getSameSite (cookie );
829
842
if (sameSite == null ) {
830
843
return field ;
831
844
}
832
845
HttpCookie updatedCookie = buildCookieWithUpdatedSameSite (cookie , sameSite );
833
846
return new HttpCookieUtils .SetCookieHttpField (updatedCookie , this .compliance );
834
847
}
835
848
849
+ private boolean isSessionCookie (HttpCookie cookie ) {
850
+ return SuppliedSameSiteCookieHandlerWrapper .this .sessionCookieName .equals (cookie .getName ());
851
+ }
852
+
836
853
private HttpCookie buildCookieWithUpdatedSameSite (HttpCookie cookie , SameSite sameSite ) {
837
854
return HttpCookie .build (cookie )
838
855
.sameSite (org .eclipse .jetty .http .HttpCookie .SameSite .from (sameSite .name ()))
0 commit comments