Laravel Axios在使用Vue时返回状态码419失败。

10 浏览
0 Comments

Laravel Axios在使用Vue时返回状态码419失败。

概念:我有一个应用程序,允许用户发布问题...当用户点击“提问”按钮时,我尝试使用Vue.js和Axios提交问题。\n问题:70%的时间,问题会成功提交,但30%的时间会失败,并返回“无法加载资源:服务器响应状态为419(未知状态)”。\n我的Vue组件:\n\n\n\n我的Web.php:\n

Route::post('/timeline', 'FeedController@storeFeed');

\n我的控制器:\n

public function storeFeed(Request $request)
{
    if($request->feed_type == 'Debate'){
        $this->validate(request(), [
            'feed_subject' => 'required',
            'feed_body' => 'required',
        ]);
        $publishedFeed = Auth::user()->publishDebate($request);
    }elseif($request->feed_type == 'Question'){
        $this->validate(request(), [
            'feed_body' => 'required',
        ]);
        $publishedFeed = Auth::user()->publishQuestion($request);
    }else{
        $this->validate(request(), [
            'feed_body' => 'required',
        ]);
        $publishedFeed = Auth::user()->publishPost($request);
    }
    return $publishedFeed->id;
}

\n我的HTML头部:\n




    
    
    
    
    
    

\n我的resources\\assets\\js\\Bootstrap.js:\n

    window.axios = require('axios');
window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';
/**
 * 接下来,我们将注册CSRF令牌作为Axios的公共头部,以便
 * 所有传出的HTTP请求自动附加。这只是
 * 一种简单的便利,不必手动附加每个令牌。
 */
let token = document.head.querySelector('meta[name="csrf-token"]');
if (token) {
    window.axios.defaults.headers.common['X-CSRF-TOKEN'] = token.content;
} else {
    console.error('找不到CSRF令牌:https://laravel.com/docs/csrf#csrf-x-csrf-token');
}

0
0 Comments

在使用Vuejs/Laravel应用时,遇到了一个问题:使用Axios发送put/post请求时,返回了一个状态码为419的错误。可以通过以下步骤重现该问题:

  1. 正常使用Vuejs/Laravel应用。
  2. 在控制器中使用\Session::flush()刷新页面:

    public function getProduct(Request $request)
    {
        \Session::flush();
        return view('product');
    }

  3. 从客户端发起put/post请求,将会返回一个状态码为419的错误。
  4. 这很可能是因为开发环境中会话过期导致的,可以尝试将会话的生命周期设置为更长的时间,看看是否可以解决这个问题。

解决方法:将会话的生命周期设置为更长的时间。

0