如何在 laravel post 方法中从 ajax 中删除 403 错误
Posted
技术标签:
【中文标题】如何在 laravel post 方法中从 ajax 中删除 403 错误【英文标题】:how to remove 403 error from ajax in laravel post method 【发布时间】:2019-02-27 04:03:07 【问题描述】:我的代码的问题是,如果我尝试通过 ajax 发送数据,它会给我错误,但是我的其他帖子表单工作正常。所以我确信错误必须在路由、路由组或 csrf feild 中出现。我试过了将 csrf 字段放入表单中,在删除按钮中,在输入标签中隐藏,在标题中但 nun 工作。代码在我的计算机上运行得非常好,但在服务器上它给出了 403 Forbidden。已经 4 天了。请提供您宝贵的见解和建议。
<!DOCTYPE html>
<html>
<head>
<meta name="csrf-token" content=" csrf_token() " />
<title></title>
<style type="text/css" media="screen">
</style>
<script src="asset('js/admin_update_ajax.js')"></script>
<link href="!! asset('css/table_layout.css') !!" media="all" rel="stylesheet" type="text/css" />
</head>
<body>
<table class="table">
<thead>
<tr>
<th style="text-align:center">Id</th>
<th style="text-align:center">Extra Details</th>
<th style="text-align:center">Update</th>
<th style="text-align:center">Delete</th>
</tr>
</thead>
<tbody>
<?php foreach ($details as $value): ?>
<tr>
<td style="font-weight: bold"> $value->id </td>
<td> $value->extra_detail </td>
<td> <button class="btn btn-success btn-md" data-toggle="modal" data-target="#modalForm">Update</button></td>
<td><button type="button" class="btn btn-danger">Delete</button></td>
</tr>
</tr>
<?php endforeach ?>
</tbody>
</table>
<div class="modal fade" id="modalForm" role="dialog">
<div class="modal-dialog">
<div class="modal-content">
<!-- Modal Header -->
<div class="modal-header">
<h4 class="modal-title" id="myModalLabel">Contact Form</h4>
<button type="button" class="close" data-dismiss="modal">
<span aria-hidden="true">×</span>
<span class="sr-only">Close</span>
</button>
</div>
<!-- Modal Body -->
<div id="showmessage">
<div class="modal-body">
<p class="statusMsg"></p>
<div id="hidebody">
<form role="form" id="update_form" method="POST">
<input type="hidden" name="_token" id="token" value=" csrf_token() ">
<div >Id:<span id="idfromtable"></span></div>
<div class="form-group">
<label for="starting_date">Starting Date</label>
<input type="date" class="form-control" id="starting_date" placeholder="Enter starting date">
</div>
<div class="form-group">
<label for="ending_date">Ending Date</label>
<input type="date" class="form-control" id="ending_date" placeholder="Enter Ending date">
</div>
<div class="form-group">
<label for="extra_details">Extra Details</label>
<textarea class="form-control" id="extra_detail" placeholder="Enter Ending date"></textarea>
</div>
</form>
</div>
</div>
</div>
<!-- Modal Footer -->
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary submitBtn" onclick="submit_update_form()">SUBMIT</button>
</div>
</div>
</div>
</div>
</body
> Blockquote
Java 脚本代码是
function submit_update_form()
var starting_date = document.forms["update_form"]["starting_date"].value;
alert(starting_date);
var ending_date = document.forms["update_form"]["ending_date"].value;
alert(ending_date);
var extra_detail = document.forms["update_form"]["extra_detail"].value;
alert(extra_detail);
$.ajax(
type: "POST",
headers:
'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
,
url: "/check",
data:
id:id,
table_name:table_name,
exam_name:exam_name,
link:link,
extra_detail:extra_detail
,
success: function(resultData) alert(resultData)
);
alert("update end from modal");
这是我的路线文件
Route::post('/check', 'AdminController@index');
我的控制器
public function index()
return "Data Inserted Successfully In Table ";
【问题讨论】:
遇到什么错误可以分享一下 请分享您的错误日志? 在 f12 中出现 403 错误。 在哪里可以找到日志文件。 【参考方案1】:添加以下代码
<script>
$(function ()
$.ajaxSetup(
headers:
'X-CSRF-Token': "<?php echo csrf_token() ?>"
);
);
</script>
【讨论】:
【参考方案2】:您必须在请求标头中传递
csrf-token
。
$.ajax(
type: "POST",
headers:
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
,
url: "/check",
data:
id:id,
table_name:table_name,
exam_name:exam_name,
link:link,
extra_detail:extra_detail
【讨论】:
如果 CSRF 发送正确,您是否检查了浏览器网络调试器选项卡?以上是关于如何在 laravel post 方法中从 ajax 中删除 403 错误的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Laravel 5 中从 Carbon 获取当前时间戳