gpt4 book ai didi

php - Laravel 5,ajax,500 内部服务器错误,VerifyCsrfToken.php 第 46 行 : 中的 TokenMismatchException

转载 作者:行者123 更新时间:2023-12-01 07:50:37 28 4
gpt4 key购买 nike

我在弹出警报中使用 Laravel 5 和 ajax post,它给了我错误“500 内部服务器错误”,当我检查 firebug 时,我发现 ajax 返回一个错误页面,显示“VerifyCsrfToken.php 中的 TokenMismatchException”第 46 行:“

当我评论 App\Http\Middleware\VerifyCsrfToken 时,它工作正常,但我认为不推荐这样做,我打印 _token 变量并且它不为空
ajax 邮政编码是:

 $('#demo_4').click(function(){
bootbox.prompt("What is your name?", function(result) {
if (result === null) {
alert("Prompt dismissed");
} else {
// alert("Hi <b>"+result+"</b>");
$.ajax({
url: 'test',
type: "post",
data: {'name':result, '_token': $('input[name=_token]').val()},
success: function(data){
alert(data);
}
});
}
});
});

路线代码是:

Route::post('test', 'AccountController@login');

AccountController 代码是:

<?php
namespace App\Http\Controllers;
use Input;
use Request;
use App\Http\Controllers;

class AccountController extends Controller
{

public function login()
{

if (Request::ajax()) {
$data = Input::all();
print_r($data);
die;
}

}
}

最佳答案

您需要将此行插入到您的表单中

<input type="hidden" name="_token" value="<?php echo csrf_token(); ?>">

或者将其添加到 Controller

use Illuminate\Support\Facades\Session

请启用调试器并提供 Laravel5 调试器显示的内容以了解更多详细信息。

在ajax调用中将其添加到data选项中:

'_token':$('input[name=_token]').val()

或者以全局方式添加

<meta name="_token" content="{!! csrf_token() !!}"/>

并添加到页脚:

<script type="text/javascript">
$.ajaxSetup({
headers: { 'X-CSRF-Token' : $('meta[name=_token]').attr('content') }
});
</script>

UPD:到 Controller

use Input;
use Request;
class AccountController extends Controller {
public function login()
{
// Getting all post data
if(Request::ajax()) {
$data = Input::all();
print_r($data);die;
}
}

UPD2:尝试将其添加到您的主布局

<meta name="_token" content="{!! csrf_token() !!}"/>

<script type="text/javascript">
$.ajaxSetup({
headers: { 'X-CSRF-Token' : $('meta[name=_token]').attr('content') }
});
</script>

检查您的网络服务器是否已经具有对 session 目录的写入权限,它可以是app/storage/framework/sessions/。执行

rm -f {your_web_app}/storage/framework/sessions/*

重新加载网络服务器。

在某些情况下,使用以下代码检查 app/Http/Middleware/VerifyCsrfToken.php 中的 tokensMatch 方法:

$token = $request->ajax() ? $request->header('X-CSRF-Token') : $request->input('_token');

return $request->session()->token() == $token;

并检查 javascript 文件:

// CSRF protection
$.ajaxSetup(
{
headers:
{
'X-CSRF-Token': $('input[name="_token"]').val()
}
});

关于php - Laravel 5,ajax,500 内部服务器错误,VerifyCsrfToken.php 第 46 行 : 中的 TokenMismatchException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30460791/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com