0

我正在使用演示应用 PingCRM 来了解 Inertia.js 的工作原理。

当用户单击主菜单项(例如组织或联系人)时,XHR 会发送到相应的 URL /organizations/contacts如预期的那样。如果我使用页面底部的分页链接,它们会按预期发送诸如/contacts?page=1,之类的请求。/contacts?page=2

但是,如果我离开该部分,然后返回,服务器会以某种方式知道我访问了哪个页面并返回重定向。例如,如果我正在浏览/contacts?page=3,那么我选择主菜单项组织,它会请求/organizations(如预期的那样)。但是,当我下一次选择联系人时,它会发送一个/contacts(如预期的那样),但会收到一个 302,其位置设置为/contacts?page=3.

这个功能是如何工作的?Laravel 会话是否存储了我的状态,这是否是 Inertia 后端适配器的一部分?还是将状态存储在浏览器中并在 cookie 中传递给服务器?在 Intertia.js 文档中哪里可以找到详细信息?(本地状态部分似乎更多地与浏览器历史相关)。

我注意到过滤组织时存在类似的情况。如果您在使用过滤器时离开该页面,则返回该页面,请求/organizations接收 302,位置为/organizations?search=abc.

4

1 回答 1

1

找到了答案...

这些路由附加了一个“记住”查询字符串的中间件。当请求进入这些路由之一时,如果它没有查询字符串并且之前已“记住”一个,则将其添加到路由并将重定向发送到客户端。

代码在课堂上Reinink\RememberQueryStrings

于 2020-10-18T05:07:33.160 回答