rak*_*btg 3 javascript php laravel laravel-5 laravel-5.3
通过wysiwyg编辑器上传图像时,我需要传递Laravel CSRF令牌FormData().但它似乎失败了,或者它没有使用该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 );
}
});
}
Run Code Online (Sandbox Code Playgroud)
它没有添加带有表单数据的laravel csrf标记,因为我仍然收到错误
VerifyCsrfToken.php第68行中的TokenMismatchException
如何使用表单数据添加令牌?
你应该添加一个名为 - 的字段_token,而不是csrfToken像这样:
data.append( "_token", Laravel.csrfToken ); // <- adding csrf token
Run Code Online (Sandbox Code Playgroud)
这就是Laravel的助手方法csrf_field().
根据Laravel Docs,在Ajax调用的情况下 - 例如,您可以将令牌存储在HTML元标记::
<meta name="csrf-token" content="{{ csrf_token() }}">
Run Code Online (Sandbox Code Playgroud)
然后像这样包含在你的ajax标题中:
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助!
| 归档时间: |
|
| 查看次数: |
5915 次 |
| 最近记录: |