Ajax中的Laravel 5 X-CSRF-TOKEN 500(内部服务器错误)

时间:2018-02-11 16:29:49

标签: ajax laravel csrf-protection

您好我使用Ajax更改了密码(这是代码的简短版本):

<Grid style="{StaticResource MyRowDefs}">
    <Button  Grid.Row="0" Content="Button1/>
    <TextBox Grid.Row="1"/>
    <Button  Grid.Row="2" Content="Button2/>
</Grid>

我的csrf-token: var password = document.querySelector('[name="password"]').value; action = 'http://localhost:8012/market2/market2/public/account/query/'; if (window.XMLHttpRequest) { xmlhttp = new XMLHttpRequest(); // code for IE7+, Firefox, Chrome, Opera, Safari } else { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); // code for IE6, IE5 } xmlhttp.open("post",action + password, true); xmlhttp.setRequestHeader("X-CSRF-TOKEN", document.getElementById('token-csrf').value); xmlhttp.onreadystatechange=function() { if (this.readyState == 4 && this.status == 200) { if (this.responseText == "false") { document.getElementById("error_password").innerHTML = "You actually password is wrong!"; return false; } else { document.getElementById("error_password").innerHTML = "OK"; return true; } } } xmlhttp.send(); }

我不知道我是否正确添加参数<input type="hidden" name="_token" id="token-csrf" value="{{ csrf_token() }}">到我的脚本中。首先我有错误X-CSRF-TOKEN所以我添加了ajax 419 (unknown status),现在我有错误X-CSRF-TOKEN。我也试过这个:Laravel 5.5 ajax call 419 (unknown status)

编辑帖子:

不是我的查询方法:

500 (Internal Server Error)

路线:

public function queryPass($pass) {

  $user = Auth::user();
  $current_password = $user->password;

  if(Hash::check($pass, $current_password)) {

    $updatePassword = App\User::where('id', $user->id)->update(['password' => bcrypt($pass)]);
    echo "true";

  } else {

    echo "false";
    die;

  }

}

1 个答案:

答案 0 :(得分:1)

第一个问题是他在控制器的顶部错过了use Illuminate\Support\Facades\Hash;,他使用了use Hash;,当我们解决了第二件事时,他正在从控制器内部返回一个布尔值,当他应该返回一个实现__toString方法或字符串的对象,所以他返回了一个正确的响应,在这种情况下是一个字符串“true”和“false”