【问题标题】:Laravel API with React. Fetch 'POST' responds with 401: "Unauthorized"带有 React 的 Laravel API。获取 'POST' 以 401 响应:“未经授权”
【发布时间】:2018-07-05 19:28:45
【问题描述】:

我似乎无法弄清楚如何将新数据发布到数据库。 我有一个带有 handleSubmit 的表单:

handleSubmit(e) {
  e.preventDefault();
  const {to_user, hours_spend, hours_max} = this.state

  fetch('api/klippekort', {
    method: 'POST',
    headers: {
      'X-CSRF-TOKEN': this.props.csrf_token,
      'Accept': 'application/json',
      'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    to_user,
    hours_spend,
    hours_max
  })      
}).then(res => console.log(res))

} 我在控制台中得到的结果是:

Response { type: "basic", url: "http://localhost/api/klippekort", redirected: false, status: 401, ok: false, statusText: "Unauthorized", headers: Headers, bodyUsed: false }

CSRF 令牌设置正确:

x-csrf-token:   n9itPhKayehfKFTlmlq6xDn

在 api.php 中也设置了路由(这里没有中间件)

Route::post('klippekort','KlippekortController@store');

我还尝试在 App\Http\Middleware\VerifyCsrfToken 中一起禁用 CSRF 令牌:

protected $except = [
  'api/*'
];

任何想法如何解决这个问题?

【问题讨论】:

  • 它与csrf无关,它与api组有关。打开您的路线服务提供商以了解更多信息。
  • middleware('auth:api') 这就是给你 401 响应的原因......
  • Route::middleware('auth:api')->get('/user', function (Request $request) { return $request->user(); });路线::post('klippekort','KlippekortController@store');应该没有影响吧?
  • 当我将其注释掉时,我得到了同样的错误......并且我以管理员身份登录?
  • 运行以下命令:php artisan route:list 找到您遇到问题的路由并查看其中间件

标签: javascript laravel reactjs api fetch


【解决方案1】:

感谢 Kyslik,我发现响应未经授权的是中间件。

在我的控制器中

__contruct() { $this->middleware('auth') } 

一旦删除,问题就解决了

【讨论】:

    猜你喜欢
    • 2022-08-07
    • 1970-01-01
    • 1970-01-01
    • 2021-04-07
    • 1970-01-01
    • 1970-01-01
    • 2016-11-08
    • 2020-11-15
    • 2019-10-13
    相关资源
    最近更新 更多