【问题标题】:Can you check if a http-only cookie is set in Javascript?你能检查一下是否在 Javascript 中设置了 http-only cookie 吗?
【发布时间】:2022-08-03 15:34:43
【问题描述】:

现在在我的系统中,我有一个 javascript 函数,当您想要执行需要身份验证的操作时,您可以调用然后使用 .then().catch(),javascript 函数在端点上执行一个 ajax 请求,检查用户是否有一个访问 cookie:

Javascript:

let OAuthManager = {
    endpoints: {
        refresh: {
            \'url\':\'{{ url_for(\"refresh_access_token\") }}\',
            \'type\':\'GET\'
        }
    }
};


OAuthManager.refresh = function(perform_async) {
    return $.ajax({
        url: OAuthManager.endpoints.refresh.url,
        type: OAuthManager.endpoints.refresh.type,
        async: perform_async ? false : true,
    })
}

快速API:

@router.get(\"/token/refresh\")
async def refresh_access_token(request: Request, refresh_token=Cookie(None), access_token=Cookie(None)):
    \"\"\"
    The refresh endpoint should go to the cognito endpoint and exchange the refresh_token cookie for a new
    access token.
    \"\"\"
    if access_token:
        return JSONResponse({\"detail\": \"Access token already set.\"})
    token_response = await self.get_new_access_token(refresh_token)
    if token_response:
        response = JSONResponse({\"detail\": \"New access token set.\"})
        response.set_cookie(
            key=\"access_token\",
            value=token_response.access_token,
            expires=token_response.expires_in,
            httponly=True,
        )
        return response
    raise HTTPException(detail=\"Could not refresh access token\", status_code=status.HTTP_401_UNAUTHORIZED)

但是我不想总是检查端点来查看我是否有访问令牌,以减少请求的数量。

是否可以检查是否已在 javascript 中设置了仅 HTTP cookie,或者如果设置了 cookie,我是否需要创建另一个具有与令牌相同的到期日期的非 http-only cookie?

标签: javascript cookies


【解决方案1】:

是否可以检查是否已在 javascript 中设置了仅 HTTP cookie,

不,这就是 HTTP-only 标志的意义所在。

或者如果设置了 cookie,我是否需要创建另一个具有与令牌相同的到期日期的非 http-only cookie?

这将是一种相当可靠的方法。

【讨论】:

    猜你喜欢
    • 2012-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-23
    • 1970-01-01
    相关资源
    最近更新 更多