我正在尝试发布
http://localhost:8888/test
JS
$('.saveBTN').click(function (event) {
$( "form#editForm" ).on( "submit", function( event ) {
event.preventDefault();
var inputs = {};
$("#editForm :input").each(function() {
inputs[$(this).attr("name")] = $(this).val();
});
var $inputs = JSON.stringify(inputs);
$.ajax({
headers: {'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')},
url: '/test',
type: 'POST',
dataType: 'json',
data: $inputs,
success: function (data, textStatus, xhr) {
console.log(data);
},
error: function (xhr, textStatus, errorThrown) {
console.log('PUT error.');
}
});
});
我一直在
500内部服务器错误
我已尝试添加
<meta name="csrf-token" value="{{ csrf_token() }}">
这是我的Ajax
headers: {'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')},
对此的任何提示都将非常感激!
答案 0 :(得分:7)
在表格下方添加此内容。
// This will generate token field which will be token
{{ csrf_field() }}
// Expected Output
<input type="hidden" name="_token" value="ssdfdsfsdfsdfs32r23442">
VerifyCsrfToken.php
- 文件为middleware
,包含在Web中间件组中,将自动验证请求输入中的token
是否与会话中存储的令牌匹配。< / p>
请参阅此URL以获取更多信息: http://laravel.com/docs/master/routing#csrf-x-csrf-token
更新 - 2016年12月23日
从laravel开始,您也可以使用以下内容。
<form action="/foo/bar" method="POST">
<input type="hidden" name="_method" value="POST">
<input type="hidden" name="_token" value="{{ csrf_token() }}">
</form>
API参考:https://laravel.com/docs/master/routing#form-method-spoofing
答案 1 :(得分:0)
与评论中提到的 @Paulpro 和 @Mark Davidson 一样,meta
标记应该具有content
属性,而不是值:
<meta name="csrf-token" content="{{ csrf_token() }}">
而不是:
<meta name="csrf-token" value="{{ csrf_token() }}">
希望这有帮助。