Laravel 5.3 - SESSION_DOMAIN 导致的 TokenMismatchException

Bug描述

众所周知,laravel的post请求是有csrf保护。
但是我在laravel5.3之后的版本就算加上{{ csrf_token() }}都会出现TokenMismatchException。
而在服务器的测试是完全没问题,这让我百思不得其解。

一切的bug解决方法一定在存在于stackoverflow的某个角落。

file

Bug原因的思考

我在laravel5.3的项目里的evn里面的session_domain写了localhost:8000。
我用php artisan serve启动的服务是127.0.0.1:8000 。
但是我的服务端的session存在localhost:8000。
所以每次post请求的127.0.0.1服务端都没有session。自然而然不能匹配。
而在服务器上面是用ip地址,所以不翻车。

所以,在本地,只要把session_domain删掉,用默认的设置null,即可解决问题。

localhost和127.0.0.1不是一样的吗?

用起来好像差不多,但是实际上是有本质的区别,有兴趣的自己百度一下。

最后,附上解决这个问题的stackoverflow地址

导致TokenMismatchException还有很多种情况。
有人是因为storage权限不够,有人是因为app_key……
Laravel 5.3 - TokenMismatchException in VerifyCsrfToken.php line 68

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!