我已经为我的网站禁用了Cookie并获得了TokenMismatchException
。由于我使用会话文件驱动程序和我的表单,我有{{ csrf_field() }}
为什么当我禁用我的网站的Cookie时,我获得了TokenMismatchException
?为我的网站禁用cookies,我得到TokenMismatchException
如果我检查该被做我可以看到该令牌在后发送的呼叫:令牌J0Y0t2hj3jjVFMdGCch0apliPqlz1lZlwUc0VqCk
我已经为我的网站禁用了Cookie并获得了TokenMismatchException
。由于我使用会话文件驱动程序和我的表单,我有{{ csrf_field() }}
为什么当我禁用我的网站的Cookie时,我获得了TokenMismatchException
?为我的网站禁用cookies,我得到TokenMismatchException
如果我检查该被做我可以看到该令牌在后发送的呼叫:令牌J0Y0t2hj3jjVFMdGCch0apliPqlz1lZlwUc0VqCk
为什么我得到TokenMismatchException当我禁用cookie为我的网站?
由于表单中的CSRF标记值需要与存储在会话中的CSRF标记值进行比较。
如果您的会话没有使用Cookie,那么当然这会失败。
因此,请决定是否要求您的应用程序使用Cookie,或者如果您想使用安全性较低的方式来传输会话标识(GET/POST - 如何在您的框架中配置该应用程序,应该在其文档中)
检查你的配置文件(config/session.php)并查看你的会话驱动程序是否为cookie。如果是的话,那么改为别的。 这里是笔记:Laravel's HTTP Session
file - sessions are stored in storage/framework/sessions.
cookie - sessions are stored in secure, encrypted cookies.
database - sessions are stored in a relational database.
memcached/redis - sessions are stored in one of these fast, cache based stores.
array - sessions are stored in a PHP array and will not be persisted.
在我的.ENV SESSION_DRIVER =文件 –
好吧,那么,如果是这样的话,你必须传递客户端唯一ID与您的请求每次虽然 – Orion
我的会话驱动程序被设置为文件,这意味着laravel不应该使用Cookie来存储会话数据 –
我不是在谈论会话数据的存储,而是通过会议客户端和服务器之间的ID。 – CBroe
无论如何,存储在cookie中的加密数据不是一个“真正的”会话(恕我直言,至少;我从来不明白为什么某些框架会在这种奇怪的机制中看到任何好处。)“真正的”会话将数据存储在服务器上,但当然需要某种方式将存储的数据与特定的客户端相关联 - 这就是_session id_发挥作用的地方。客户端必须在服务器下一次请求时将服务器_back_告诉的会话ID发送给服务器,以便服务器知道哪一组存储的数据属于该客户端。 [...] – CBroe