【发布时间】:2017-11-11 17:26:54
【问题描述】:
根据 Turbolinks 5 文档中的“以下重定向”(https://github.com/turbolinks/turbolinks#following-redirects):
当您访问位置
/one并且服务器将您重定向到位置/two,您希望浏览器的地址栏显示重定向的 网址。但是,Turbolinks 使用
XMLHttpRequest发出请求,这 透明地遵循重定向。 Turbolinks 无法分辨 请求是否导致重定向而无需额外 来自服务器的合作。
解决办法是:
发送
Turbolinks-Location标头以响应访问 重定向,Turbolinks 将替换浏览器的最高历史记录 输入您提供的值。Turbolinks Rails 引擎会自动为使用
redirect_to帮助程序重定向的非 GET XHR 请求执行此优化。
我对在我的 Django (1.11) 项目中使用 Turbolinks 非常感兴趣,我想知道是否有人能指出我如何创建新的 Django redirect() 函数或将现有函数修改为 always包括重定向按预期运行所需的 Turbolinks-Location 标头。我绝对不想每次进行重定向时都手动设置此标头。
在“提交表单后重定向”部分有一个类似的条目 (https://github.com/turbolinks/turbolinks#redirecting-after-a-form-submission) 我也希望能在理解如何实施方面提供任何帮助:
如果表单提交导致服务器上的状态更改 影响缓存页面,考虑清除 Turbolinks 的缓存
Turbolinks.clearCache().Turbolinks Rails 引擎会自动执行此优化 对于使用
redirect_to帮助程序重定向的非 GET XHR 请求。
我确实看到 github 上有一个“Drop-in turbolinks implementation for Django”包,但这是从 turbolinks-classic 分叉的,源代码没有提到 Turbolinks-Location 标头,所以我确定这不是我的我正在寻找。
【问题讨论】:
标签: python django redirect http-headers turbolinks