上下文: 我有 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 在 ..\xampp\htdocs
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ cakephp/app/webroot/ [L]
RewriteRule (.*) cakephp/app/webroot/$1 [L]
</IfModule>
提前感谢任何勇敢的帮助者!