我正在尝试使用laravel和我为它制作的api登录用户,我使用电子邮件和密码制作了邮政编码,但是它返回了我的令牌不匹配错误,我想那是因为我没有&# 39; t传递任何csrf,我的疑问是如何得到它。
如果我理解正确,我只需要在我的主域上进行GET并从那里抓取csrf,从cookies(?)。
我发现了这个,但是不推荐使用类,并且我不知道如何使用我更新的代码来实现:
找到:
CookieStore cookieStore = httpClient.getCookieStore();
List <Cookie> cookies = cookieStore.getCookies();
for (Cookie cookie: cookies) {
if (cookie.getName().equals("XSRF-TOKEN")) {
CSRFTOKEN = cookie.getValue();
}
}
需要在我的代码上实现抓取csrf部分:
url = new URL(AppConfig.BaseURL);
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
connection.setRequestMethod("GET");
// CookieStore cookieStore = connection.getCookieStore();
// List<HttpCookie> cookies = cookieStore.getCookies();
// for (Cookie cookie: cookies) {
// if (cookie.getName().equals("XSRF-TOKEN")) {
// CSRFTOKEN = cookie.getValue();
// }
// }
评论是错误的还是已弃用但无法弄清楚如何解决它!
答案 0 :(得分:0)
在每个页面请求中,我们将csrf标记作为头部
中的元值传递
<meta name="csrf-token" content="{{ csrf_token() }}" />
&#13;
之后我们只需在javascript中使用此元值来设置X-CSRF-TOKEN标头
var request = new XMLHttpRequest();
request.open('POST', url);
request.setRequestHeader("X-CSRF-TOKEN", $('meta[name="csrf-token"]').attr('content'));
request.send(data);
希望这会对你有所帮助
编辑:您填充的标题可能是错误的。对我们来说,它是X-CSRF-TOKEN而不是XSRF-TOKEN
答案 1 :(得分:0)
使用Laravel Passport验证您的API请求to some other SO answers将其配置为监听password_grant类型,并在您的APP中使用此库https://laravel.com/docs/5.4/passport进行make Oauth2 Api调用