当通过wysiwyg编辑器上传图像时,我需要通过FormData()传递Laravel令牌。但是它似乎失败了,或者它没有使用append()方法添加csrf令牌。
这是我的代码:
function uploadImage( image ) {
var data = new FormData();
data.append( "image", image );
data.append( "csrfToken", Laravel.csrfToken ); // <- adding csrf token
// Laravel.csrfToken will return the csrf token.
console.log( data.entries() );
$.ajax ({
data: data,
type: "POST",
url: "/article/store/image",
cache: false,
contentType: false,
processData: false,
success: function(url) {
var image = IMAGE_PATH + url;
$( '#editor' ).summernote( "insertImage", image );
},
error: function( data ) {
console.log( data );
}
});
}

它没有在表单数据中添加laravel令牌,因为我仍然收到了一个错误。
TokenMismatchException在VerifyCsrfToken.php第68行
如何使用表单数据添加令牌?
发布于 2016-11-29 13:31:26
您应该添加一个名为- _token的字段,而不是像这样的csrfToken:
data.append( "_token", Laravel.csrfToken ); // <- adding csrf token这就是Laravel的助手方法-- csrf_field()所做的。
根据Laravel博士的说法,在Ajax调用的情况下--例如,可以将令牌存储在HTML标记中:
<meta name="csrf-token" content="{{ csrf_token() }}">然后在ajax头中包括如下内容:
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});希望这能有所帮助!
发布于 2016-11-29 13:35:33
对于ajax请求,我喜欢用$.ajaxSetup设置一次。
在我的布局中:
<meta name="csrf-token" content="{{ csrf_token() }}">在我的app.js:
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});这就省去了我必须记住将_token输入附加到每个请求中。
发布于 2016-11-29 13:41:55
虽然@Saumya已经回答了这个问题,但我使用头发送CSRF令牌,如下所示:
$.ajax ({
data: data,
type: "POST",
headers: {'X-CSRF-TOKEN': Laravel.csrfToken },
url: "/article/store/image",
cache: false,
contentType: false,
processData: false,
success: function(url) {
var image = IMAGE_PATH + url;
$( '#editor' ).summernote( "insertImage", image );
},
error: function( data ) {
console.log( data );
}
}); 如果您使用ajax在整个应用程序中发送多个请求,则可以同时为每个请求设置全局请求:
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': Laravel.csrfToken
}
});学习更多这里
https://stackoverflow.com/questions/40867101
复制相似问题