用于 AJAX CORS 的 Laravel CSRF 令牌

Posted

技术标签:

【中文标题】用于 AJAX CORS 的 Laravel CSRF 令牌【英文标题】:Laravel CSRF token for AJAX CORS 【发布时间】:2014-05-01 05:18:31 【问题描述】:

如何在 Laravel 中为跨域(子域)请求提供 csrf 令牌。

domain.tldsub.domain.tld 都在同一个 Laravel 框架下运行,

因此我可以在sub.domain.tld 中使用csrf_token(),我直接将它附加到请求中,但它一直给我tokenMismatchException,我试图关闭csrf 过滤器并转储Input::('_token')Session::token() ,它总是不匹配

那么,我如何为另一个域提供令牌?

【问题讨论】:

【参考方案1】:

您是否添加了正确的标头以允许 ajax 请求跨域/子域?

如果没有,请在 app/filters.php 中的 App::before 过滤器中添加:

App::before(function($request)

    $host = explode( '.', $_SERVER['HTTP_HOST'] );
    $subdomain = array_shift( $host );
    header('Access-Control-Allow-Origin: http://' . $subdomain . '.yourdomain.com');
);

【讨论】:

以上是关于用于 AJAX CORS 的 Laravel CSRF 令牌的主要内容,如果未能解决你的问题,请参考以下文章

Cors Ajax 请求适用于子域但不适用于主域

错误:laravel/VueJS ajax 请求中的 CORS

Ajax POST 到 Laravel API 偶尔会被 CORS 阻止

barryvdh/laravel-cors 不适用于我的路线

Laravel Cors 中间件不适用于 POST 请求

Laravel 5:仅在一个 URL 上路由 CORS 问题