如何在React组件发出的请求中包含'laravel_session'cookie?

时间:2019-07-02 12:38:46

标签: reactjs laravel cookies session-cookies react-cookie

我有一个带有Laravel后端的React应用,我希望它们之间的某些请求需要认证。据我所知,该用户由“ laravel_session” cookie标识,但是我似乎无法从我的React组件中访问它,也无法让fetch / axios自动包含它。

初始页面加载在响应标题中包括以下内容:

  

Set-Cookie:XSRF-TOKEN = {...}; expires =星期二,2019年7月2日14:14:42 GMT;最大年龄= 7200;路径= /

     

Set-Cookie:laravel_session = {...}; expires =星期二,2019年7月2日14:14:42 GMT;最大年龄= 7200;路径= /; httponly

我尝试使用react-cookie,它可以很好地访问XSRF-TOKEN cookie,但看不到laravel_session

我尝试通过获取设置credentials:true

   const fetchOptions = {
        method: 'POST',
        headers: {
            Accept: 'application/json',
            'Content-Type': 'application/json',
        },
        credentials: 'include',
        body: JSON.stringify({session:longSession}),
    };

    const req = fetch(fetchUrl, fetchOptions).then((response) => {
        console.log(response.json())
    })

...和withCredentials:true与axios:

    axios.post(fetchUrl,
        JSON.stringify({session:longSession}),
        {withCredentials:true}
    ).then(function (response) {
        console.log(response);
    })

替代:

    axios(fetchUrl, {
        method: "POST",
        data: JSON.stringify({session:longSession}),
        withCredentials: true
    }).then(function (response) {
        console.log(response);
    })

注释/添加credentialswithCredentials部分不会导致任何cookie包含在请求中(即使很容易找到的XSRF-TOKEN-在其自己的单独标头下发送) )。

任何帮助将不胜感激。


编辑:进一步阅读后,似乎httponly cookie无法被javascript访问。我猜想这是为了防止类似跨站点脚本的操作,我不应该更改此设置。

现在我的问题是更改此标志是否会引起任何安全问题,以及是否有人可以想到任何替代方法来验证我从React Components发出的请求。

0 个答案:

没有答案