[英]Dropzone with laravel, it displays 419 error
我已經測試了我所看到的所有內容,但它對我不起作用,我正在使用帶有 laravel 的 dropzone,我的問題是它顯示 419 錯誤,我知道這與 csrf 令牌有關,但我無法修復它。
我的 HTML 代碼是這樣的:
<div id="my-dropzone" class="dropzone"></div>
我的 javascript 代碼是這樣的:
Dropzone.autoDiscover = false;
$(document).ready(function(){
$('#my-dropzone').dropzone({
url: 'http://54.161.128.196/pre_image/store',
headers: {
'X-CSRF-TOKEN': $('meta[name="token"]').attr('content')
},
method: 'post',
dictResponseError: 'Error uploading file!'
});
});
我的 Laravel 路線:
Route::post('/pre_image/store', 'Pre_ImageController@store');
我將它放在中間件中以查看是否可以刪除 419 錯誤:
它在 VerifyCsrfToken 中間件中
protected $except = [
'pre_image/store'
];
它沒有用,我在元中有這樣的 csrf 令牌:
<meta name="csrf-token" content="{{ csrf_token() }}">
這是錯誤的屏幕截圖:
所以我想知道問題是什么,如果禁用該路由來驗證令牌,甚至它已分配令牌,為什么它會顯示 419 錯誤?
謝謝!
我對 Dropzone 也有類似的問題。 我最終將標題拉入頁面頂部的 ajax function 而不是 DZ 標題部分。 這允許任何通用 ajax 請求具有正確的 CSRF。
嘗試這個:
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
如果其他人在以表格形式上傳圖片時遇到此問題,並且上述解決方案不起作用,那么這是我的解決方案。 我在網頁上找到了生成 src 數據的 Javascript 代碼。
就我而言,是這樣的:
$('#'+newId).attr('src', canvas.toDataURL());
這個問題是它默認為一個非常大的 PNG 文件。 如果將其更改為以下內容,您將擁有一個更小的文件,上傳起來會容易得多。
$('#'+newId).attr('src', canvas.toDataURL('image/jpeg', 0.7));
這將產生一個小得多的上傳文件。 我的問題是,如果我嘗試上傳超過 3 張圖片,我會收到錯誤消息。 如果質量不夠好,請將 0.7 更改為 0.8。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.