Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/cakephp/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
关于AJAX请求的CakePHP 403_Cakephp_Redirect_Controller - Fatal编程技术网

关于AJAX请求的CakePHP 403

关于AJAX请求的CakePHP 403,cakephp,redirect,controller,Cakephp,Redirect,Controller,我正在尝试使用AJAX自动完成我网站上的搜索框。我正在使用firebug测试我的应用程序。当我尝试搜索某些内容时,Firebug告诉我AJAX请求返回了403禁止的错误。但是,当我复制AJAX请求中的确切URL时,它会返回正确的数据 编辑: 我认为这应该是JavaScript方面的东西。与普通请求相比,AJAX请求是否有可能省略的头 下面是一个AJAX请求的$\u服务器变量(我删除了两个请求上相同的参数),该请求失败(1)而不是在中键入URL并正常工作(2): (一) (二) 如果您正在使用Au

我正在尝试使用AJAX自动完成我网站上的搜索框。我正在使用firebug测试我的应用程序。当我尝试搜索某些内容时,Firebug告诉我AJAX请求返回了403禁止的错误。但是,当我复制AJAX请求中的确切URL时,它会返回正确的数据

编辑: 我认为这应该是JavaScript方面的东西。与普通请求相比,AJAX请求是否有可能省略的头

下面是一个AJAX请求的$\u服务器变量(我删除了两个请求上相同的参数),该请求失败(1)而不是在中键入URL并正常工作(2):

(一)

(二)


如果您正在使用Auth,则需要确保如果控制器/操作不在
$this->Auth->allow()
列表中,则您已登录


请确保将debug也设置为0,这可能会给您带来一些问题。

我想我找到了解决方案。我将安全级别设置为“中等”以解决此问题。我在config文件夹中找到了这一行。中等安全级别是否会在生产中造成任何问题

/**
 * The level of CakePHP security. The session timeout time defined
 * in 'Session.timeout' is multiplied according to the settings here.
 * Valid values:
 *
 * 'high'   Session timeout in 'Session.timeout' x 10
 * 'medium' Session timeout in 'Session.timeout' x 100
 * 'low'    Session timeout in 'Session.timeout' x 300
 *
 * CakePHP session IDs are also regenerated between requests if
 * 'Security.level' is set to 'high'.
 */
    Configure::write('Security.level', 'medium');
编辑:这绝对是解决方案。下面是发生的事情:

当安全级别设置为“高”时,每个请求都会生成一个新的会话ID

这意味着当我发出ajax请求时,将生成一个新的会话ID

如果您停留在同一页面上,JavaScript会发出一个请求,生成一个新的会话id,而不会记录新的会话id


所有后续的ajax请求都使用一个旧的会话id,该id被声明为无效,并返回一个空会话。

可能是跨站点请求伪造组件。它负责所有身份验证请求,GET请求除外。看看这个:

您正在使用哪些组件?在不同的点尝试
$this->log($this->params,log\u DEBUG)
,查看失败的地方。另外,我想你问题的最后一半我一直在努力寻找问题,有时有效,有时无效。我真的不明白。我尝试了$this->log($this->Auth->user(),'debug'),但它没有返回任何结果。我假设这是问题的根源,但我不太知道如何解决它。Rob,应该是
$this->log($this->Auth->user(),DEBUG)非“调试”。这是一个常量,我认为LOG_DEBUG='DEBUG'。不确定,但“调试”起作用了,它可以很好地记录事情。谢谢。Rob,检查操作系统级别的访问权限。如果在linux主机上,可以在edit0中找到建议。我当时已登录,所有需要登录的页面都正常工作。似乎有时候,出于某种原因,用户注销了ajax请求。debug=0如何影响AJAX请求?因为如果您的SQL转储或页面上出现警告,它将破坏您的JSON对象。
2011-04-02 13:44:02 Debug: Array
(
    [HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    [HTTP_COOKIE] => CAKEPHP=d8b392a5c3ee8dd948cee656240fd5ea;
    [REDIRECT_REDIRECT_UNIQUE_ID] => TZdgYq54EmIAAF7zt6wAAAJJ
    [REDIRECT_UNIQUE_ID] => TZdgYq54EmIAAF7zt6wAAAJJ
    [REMOTE_PORT] => 60281

    [UNIQUE_ID] => TZdgYq54EmIAAF7zt6wAAAJJ
    [REQUEST_TIME] => 1301766242
)
/**
 * The level of CakePHP security. The session timeout time defined
 * in 'Session.timeout' is multiplied according to the settings here.
 * Valid values:
 *
 * 'high'   Session timeout in 'Session.timeout' x 10
 * 'medium' Session timeout in 'Session.timeout' x 100
 * 'low'    Session timeout in 'Session.timeout' x 300
 *
 * CakePHP session IDs are also regenerated between requests if
 * 'Security.level' is set to 'high'.
 */
    Configure::write('Security.level', 'medium');