跨域fetch带上cookies
参见发送带凭据的请求
只有
fetch(url, { credentials: "include" })
时才会在跨域请求中发送cookies
(默认是same-site
)
然而:
当请求使用
credentials: 'include'
时,响应的Access-Control-Allow-Origin
不能使用通配符"*"
。在这种情况下,Access-Control-Allow-Origin
必须是当前请求的源
所以有了这个PR
但是还需要
@router.post("/login", responses={404: {}}, response_model=str)
async def login(data: LoginInput):
if token := await get_token(data):
response = PlainTextResponse(token, background=BackgroundTask(
lambda: UserItem.filter(id=parse_token(token).id).update(last_login_at=timestamp())
))
- response.set_cookie("token", token)
+ response.set_cookie("token", token, secure=True, samesite="none")
else:
response = Response(status_code=404)
return response
最后因为这样的实现太丑陋了还是,还是放弃了这个做法。