Wesley Weisenberger
Wesley Weisenberger

Reputation: 1

Set-Cookie header silently ignored by browser, doesn't save cookie

I've seen many variations of this question here, but as far as I can tell, my setup should be working.

I'm working on a Next.js application that's sending a PUT request to our backend, which is supposed to set a cookie with specific data that can be accessed by app.mysite.com to prefill some forms.

I'm making the request from start.mysite.com to api.mysite.com using fetch:

const response = await fetch("api.mysite.com",
    {
      method: 'PUT',
      credentials: 'include',
      headers: {
        'Content-Type': 'application/json',
      },
      body: ... 
    }

The API does it's thing, then creates that cookie:

context.Response.Cookies.Append(
    cookieName, 
    JsonSerializer.Serialize(data), 
    new CookieOptions()
{
    
        Path = "/",
    
        HttpOnly = true,
    
        Secure = true,
    
        SameSite = SameSiteMode.Strict,
    
        MaxAge = TimeSpan.FromMinutes(5),
    
        Domain = mysite.com,

    }
);

When the browser makes the API request, I see the preflight request, which seems to return successfully, and the response from the API includes the headers:

access-control-allow-credentials: true
access-control-allow-origin: https://start.mysite.com # this matches the origin of the request headers
set-cookie: prefillData=..{data}..; max-age=300; domain=mysite.com; path=/; secure; samesite=strict; httponly

Unfortunately, this cookie isn't saved in the browser (Application -> Cookies). When I've run Chrome with CORS disabled, the cookie does work as I expect it to.

Is this some CORS issue with trying to set a cookie for a parent domain? Or is it an issue with SameSite=strict? I've seen Chrome fail to set the cookie and show a warning in other cases where the cookie is misconfigured, but in this case I can't tell what's wrong.

Upvotes: 0

Views: 34

Answers (0)

Related Questions