LARAVEL - 使用我的api

时间:2017-03-02 11:04:27

标签: php android laravel http csrf

我正在尝试使用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();
        //    }
        // }

评论是错误的还是已弃用但无法弄清楚如何解决它!

2 个答案:

答案 0 :(得分:0)

在每个页面请求中,我们将csrf标记作为头部

中的元值传递

&#13;
&#13;
<meta name="csrf-token" content="{{ csrf_token() }}" />
&#13;
&#13;
&#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调用