我们正在通过{{ csrf_field() }}
方法使用laravel 5.3内置的csrf保护。
当我们运行明显失败的安全扫描时,服务器返回500 Internal Server Error
然而,这实际上不是服务器错误 - 因为它是客户端发送错误信息 - 因此它应该属于400错误范围。
我已经做了一点挖掘,并且很难看到它实际上是如何返回500.
是否有人能够建议如何将此响应更改为其他内容?
答案 0 :(得分:2)
您可以通过App/Http/Middleware/VerifyCSRFToken.php
文件覆盖此内容,如下所示:
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as BaseVerifier;
use Illuminate\Session\TokenMismatchException;
class VerifyCsrfToken extends BaseVerifier {
public function handle($request, Closure $next) {
try {
return parent::handle($request, $next);
} catch (TokenMismatchException $ex) {
// throw custom exception like so: throw new CustomException($ex->getMessage());
// or new HttpException with response code like so: abort(403, $ex->getMessage());
}
}
}
答案 1 :(得分:2)
在Laravel 5.3中,您转到app/Exceptions/Handler.php
并编辑render()
功能。
public function render($request, Exception $exception)
{
if ($exception instanceof TokenMismatchException) {
//do some stuff here.
}
return parent::render($request, $exception);
}