Gau*_*rav 37
您可以通过编辑在少数路径上禁用CSRF.
App\Http\Middleware\VerifyCsrfToken
Run Code Online (Sandbox Code Playgroud)
并在protected中添加您自己的路由名称
$except = [] array.
Run Code Online (Sandbox Code Playgroud)
这似乎不是一个好习惯,因为通过这样做我们正在删除Laravel的安全功能.
God*_*ard 17
许多人解释了如何做,但他们没有解释 url 应该是什么样子。
编辑 app/Http/Middleware/VerifyCsrfToken.php
namespace App\Http\Middleware;
use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as Middleware;
class VerifyCsrfToken extends Middleware
{
/**
* Indicates whether the XSRF-TOKEN cookie should be set on the response.
*
* @var bool
*/
protected $addHttpCookie = true;
/**
* The URIs that should be excluded from CSRF verification.
*
* @var array
*/
protected $except = [
'/user/my_function'
];
}
Run Code Online (Sandbox Code Playgroud)
在 $except 数组(); 我们用一个简单的字符串添加一个 url。这通常指向控制器,具体取决于您的路线设置方式。
例如,我的 Controller 文件夹中有一个 UserController.php 文件。我有一个类似的路线。在 web.php 路由文件中。
Route::post('/user', 'UserController@my_function')->name('my_function');
Run Code Online (Sandbox Code Playgroud)
或者,如果您只是因为不知道如何使用 CSRF 而遇到这个问题,并且实际上不需要禁用它,或者除了创建 URL。您可以使用此方法。
如果 app.blade.php 用于 ajax 相关调用,请将这些行添加到您的 app.blade.php 中。
<script>
$(function() {
$.ajaxSetup({
headers: {
'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
}
});
});
</script>
Run Code Online (Sandbox Code Playgroud)
在laravel 7. 打开文件 \App\Http\Middleware\VerifyCsrfToken.php
禁用所有路由
protected $except = [
'*',
];
Run Code Online (Sandbox Code Playgroud)
禁用某些路由
protected $except = [
'mobile/*',
'news/articles',
];
Run Code Online (Sandbox Code Playgroud)
我搜索了很长时间如何完全禁用 CSRF,有很多相同的例子,但它们没有帮助
CSRF 令牌保护您的应用程序及其用户免受跨站点请求伪造。有关更多信息,请阅读此处:
https://en.wikipedia.org/wiki/Cross-site_request_forgery
令牌通过 Laravel 中的中间件进行验证。如果您查看该文件app/Http/Middleware/VerifyCsrfToken.php
,您会看到它为您提供了添加应免于 CSRF 验证的 URL 的选项。
<?php
namespace App\Http\Middleware;
use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as BaseVerifier;
class VerifyCsrfToken extends BaseVerifier
{
/**
* The URIs that should be excluded from CSRF verification.
*
* @var array
*/
protected $except = [
//
];
}
Run Code Online (Sandbox Code Playgroud)
如果你想完全禁用它,你可以在名为web
in的 Middleware 组中找到它app/Http/Kernel.php
。这些是默认通过 HTTP 请求触发的中间件。
不过,我不建议在可能的情况下禁用它。
归档时间: |
|
查看次数: |
38753 次 |
最近记录: |