Laravel提交表单时会抛出以下异常:
TokenMismatchException in VerifyCsrfToken.php line 68:
这是由于Laravel默认开启了CSRF功能导致的,具体解决方法:
<form action="photo/12" method="post"> <?php echo method_field('PUT'); ?> <?php echo csrf_field(); ?> <input type="submit" name="提交" /> </form>
使用ajax提交时:
<meta name="csrf-token" content="{{ csrf_token() }}"> $.ajaxSetup({ headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') } });
方法二:从 CSRF 保护中排除指定 URL
比如所访问的URL为http://laravel.com/photo/12,现在想排除关于photo资源的路由,则在AppHttpMiddlewareVerifyCsrfToken::class中添加路由如下:
protected $except = [ 'photo', 'photo/*', ];
注意,方法二将无法对photo相关路由进行CSRF防护,所以请根据实际情况选择