【问题标题】:CakePhp with XAMPP redirecting and losing Post data带有 XAMPP 的 CakePhp 重定向和丢失 Post 数据
【发布时间】:2013-10-31 16:01:06
【问题描述】:

背景: 我有 Cakephp v2.3 并且正在运行 XAMPP。我的目录结构是这样的:

C:\xampp\htdocs\cakephp\app\webroot

我有一个位于 ..\xampp\htdocs 的 .htaccess 文件,它重定向到 cakephp(所以基本上我可以输入 localhost,它会将我重定向到 localhost/cakephp)

这可能是我问题的根源,但这是我能够让蛋糕发挥作用的唯一方法。

鉴于此,一切正常,直到...通过 SSL 使用 Ajax 发布。

问题: Ajax 请求源自一个 https 页面并发布到另一个 https 页面(因此这不是域问题)。问题的表现是 Post 更改为“Get”并删除已发布的数据。如果我将请求设为“获取”,它工作正常(但我不想这样做,因为它在最真实的意义上发布数据)。如果我让这两个动作都使用 http 它可以工作。我相信这种重定向正在发生,因为 Apache 正在将“/action”重写为“/cakephp/action”

令人困惑的地方: 我在过滤器之前在 CakePhp 中进行了调试,当我在该方法(beforeFilter)中返回时,我的客户端开发工具说请求是 Post,所有数据都存在,服务器响应是我的调试行。当我将返回作为目标操作的第一行时,问题就显现出来了(IE:客户端工具将请求显示为没有数据的 Get,并且发起程序是目标操作而不是 jQuery 命令)。

这让我很困惑,因为一旦它进入 beforeFilter 我会假设 Apache 不再重定向它。而且我还假设,根据 CakeBook 文档,在 beforeFilter 完成之后调用的下一个方法是目标 Action。但是由于某种原因,在 beforeFilter 完成和 targetAction 开始请求之间被重定向到 /cakephp/action

相关代码:

.htaccess at ..\xampp\htdocs

<IfModule mod_rewrite.c>
   RewriteEngine on
   RewriteRule    ^$ cakephp/app/webroot/    [L]
   RewriteRule    (.*) cakephp/app/webroot/$1 [L]
</IfModule>

提前感谢任何勇敢的帮助者!

【问题讨论】:

  • mod_rewrite 一旦请求到达应用程序代码,就会退出游戏,所以如果它会导致重定向,我会感到非常惊讶。组件确实在beforeFilter() 和控制器操作之间运行,因此您可能需要检查其中一个是否正在发出重定向。另外我建议更改您的设置,不要在 windows 文件夹中安装 XAMPP,并在 htdocs 中放弃 .htaccess,而是访问包含路径中子目录的应用程序(这应该可以直接使用),甚至更好地使用虚拟主机。
  • 抱歉,Xampp 不在 Windows 文件夹中(我的错误)。我只会使用 URL 中的目录路径,但这会弄乱我在生产环境和开发环境之间的 URL 模式,因为 XAMPP 仅在我的本地设置中。并且添加额外的路线不是我想要做的。我宁愿让 Dev 弯曲以匹配生产,反之亦然。我将研究虚拟主机。我对它们不是很熟悉,但这可能是一个解决方案。谢谢!

标签: php ajax apache .htaccess cakephp


【解决方案1】:

玩了一段时间(并修改了其他代码)后,我发现了问题的根源。

Xampp 正在重定向,但真正的问题是 cakePhp 的 CSRF 令牌验证。因为我的 AJAX 请求(而且我没有序列化生成的表单)没有 csrf 令牌。

通过添加解决此问题

$this->Security->csrfCheck = false;
$this->Security->validatePost = false;

在我的控制器中。显然我希望验证这些请求,但这就是我能够确定实际问题的方式。

Cake 应该可以更好地宣传这个案例,但无论如何,如果其他人遇到类似情况,这就是解决方案。

祝你好运!

【讨论】:

    猜你喜欢
    • 2014-05-07
    • 1970-01-01
    • 2015-07-12
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 2014-12-29
    • 2015-05-18
    相关资源
    最近更新 更多