我有一个带有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);
})
注释/添加credentials
和withCredentials
部分不会导致任何cookie包含在请求中(即使很容易找到的XSRF-TOKEN
-在其自己的单独标头下发送) )。
任何帮助将不胜感激。
编辑:进一步阅读后,似乎httponly
cookie无法被javascript访问。我猜想这是为了防止类似跨站点脚本的操作,我不应该更改此设置。
现在我的问题是更改此标志是否会引起任何安全问题,以及是否有人可以想到任何替代方法来验证我从React Components发出的请求。