#typo3-cms
在Slack 频道中提出了以下问题:
我们的一位客户想要使用工作区功能。那工作正常。但他无法测试他的表单,因为工作空间不支持 POST 请求。(POST 请求与关键字预览不兼容),有没有人知道如何使使用 POST 方法的插件在工作区或任何其他解决方法中可测试?
#typo3-cms
在Slack 频道中提出了以下问题:
我们的一位客户想要使用工作区功能。那工作正常。但他无法测试他的表单,因为工作空间不支持 POST 请求。(POST 请求与关键字预览不兼容),有没有人知道如何使使用 POST 方法的插件在工作区或任何其他解决方法中可测试?
防止执行 HTTP POST 请求的检查可以追溯到 2006 年的 TYPO3 CMS 4.0,当时将工作空间功能引入 TYPO3(请参阅当时的一致Git 修订版)。
由于工作区预览链接在不受信任的应用程序上下文中初始化后端用户,因此该检查已用于防止执行管理操作 - 今天人们会以不同的方式执行此操作并为此使用 XSRF 保护令牌。
这些工作区预览链接的处理也是 sprint 2016 中安全问题的一部分,旨在进一步消除这方面可能的安全副作用(有关详细信息,请参阅TYPO3-CORE-SA-2016-012)。
预览工作区更改有多种可能性:
在 TYPO3 后端的工作区模块的顶部栏中,可以将预览链接发送给没有凭据访问 TYPO3 后端的其他方。这种机制基本上导致了上面提到的 HTTP POST 的问题。
此行为PreviewHook
在系统扩展version
(直到并包括 TYPO3 CMS 7)或workspaces
(自并包括 TYPO3 CMS 8)的类中实现。目前没有简单的方法可以绕过 HTTP POST 检查,除非使用有效的用户帐户授予可能的预览者对 TYPO3 后端的真实和有限的访问权限。
有权访问 TYPO3 后端的编辑应该在页面模块中使用 TYPO3 的常规预览机制——这对于实时版本和工作区更改是相同的。如果在工作区中工作,唯一的区别是,网站前端会显示其他与工作区相关的小部件以比较更改。
使用这种机制,不会出现此答案开头提到的 HTTP POST 问题,并且可以不受任何限制地使用例如表单。
如果之前创建工作区预览链接的方法已经在同一个浏览器上使用过,那么ADMCMD_prev
已经创建了一个 cookie,它仍然会触发预览链接行为,并且仍然会导致 HTTP POST 出现问题 - 即使按照所述使用常规预览机制在这个部分。为了避免这种情况,必须在浏览器中手动清除此 cookie。