我有我想有发送到将触发数据库更新发布的页面。 该请求将来自于其他网站。
Route::post('update', 'DatabaseController@update');
该请求包括单个元件
(生的)
id=12345
(形式数据)
id: 12345
每当我访问该页面,我得到这个错误
TokenMismatchException in VerifyCsrfToken.php line 68:
我有我想有发送到将触发数据库更新发布的页面。 该请求将来自于其他网站。
Route::post('update', 'DatabaseController@update');
该请求包括单个元件
(生的)
id=12345
(形式数据)
id: 12345
每当我访问该页面,我得到这个错误
TokenMismatchException in VerifyCsrfToken.php line 68:
Laravel可以很容易地防止跨站请求伪造(CSRF)攻击你的应用程序。 跨站请求伪造是一种类型的恶意的利用,由此非法命令代表认证的用户执行的。
Laravel自动生成用于由应用程序管理的每个活动用户会话的CSRF“令牌”。 此令牌用于验证身份验证的用户实际上是发出请求的应用程序之一。
你在你的应用程序中定义一个HTML表单任何时候,你应该包括一个隐藏的CSRF令牌场的形式,这样的CSRF保护中间件可以验证请求。 您可以使用csrf_field助手生成令牌领域:
<form method="POST" action="/profile">
{{ csrf_field() }}
...
</form>
此外,在查阅了CSRF令牌作为POST参数,则VerifyCsrfToken中间件也将检查的X CSRF-TOKEN请求头。 你可以,例如,存储在一个HTML meta标签的标记:
<meta name="csrf-token" content="{{ csrf_token() }}">
然后,一旦你已经创建了meta标签,你可以指示像jQuery库自动将令牌添加到所有请求头。 这为您的基于AJAX的应用程序简单,方便CSRF保护:
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
参考
注意:要排除CSRF验证一些URI的去project/app/Http/Middleware
,打开文件VerifyCsrfToken.php
并通过您的网址,如:
protected $except = [
'/api/authuser',
];
此阵列中的传递的URL是从跨站请求伪造验证排除的URI。