跨域POST请求期间抓取未发送安全cookie

时间:2018-08-28 01:34:31

标签: javascript reactjs cookies fetch bottle

我无法获取此提取请求以正确发送Cookie(会话ID,该会话ID已成功存储在Cookie中的Chrome浏览器应用程序标签中)。 Cookie是创建的python瓶,名为beaker.session.id cookie,被标记为安全。

enter image description here

我将我的瓶子服务器配置为处理CORS请求和cookie,并返回以下标头:

Access-Control-Allow-Credentials →true
Access-Control-Allow-Headers →Origin, Accept, Content-Type, X-Requested-With, X-CSRF-Token, Authorization
Access-Control-Allow-Methods →PUT, GET, POST, DELETE, OPTIONS
Access-Control-Allow-Origin →http://localhost:3000

我的JavaScript代码是:

 fetch("https://#.#.#.#/session-status", 
    {
        credentials: "include",
        method: "post",
        headers: {
            'Content-Type': 'application/json',
        },
        body: JSON.stringify({
            "id": id
        }),
    }).then(res => {
        return res.json()

什么可能导致此问题?预检OPTIONS请求成功后获得200 OK,但POST请求未发送包含会话ID的必要标头。

1 个答案:

答案 0 :(得分:0)

更新:

最终发现问题是cookie的SameSite:“松散”部分。默认情况下,Bottle启用了SameSite:'Lax',但是您需要手动将其设置为None才能不发送属性。SameSite:“ Lax”不允许您根据此请求从另一个域发送不安全的请求(例如POST) RFC在第4.3节中。