站点中的所有Ajax请求(包括管理和核心功能)都会重定向到基本URL

时间:2015-12-10 09:23:24

标签: drupal drupal-7

过去几天我面临一些奇怪的问题,突然间网站中的所有ajax请求都被重定向到基本URL,包括管理页面。

Ex问题,对于自动完成。响应是json格式,我之前返回true。重定向问题开始后,这搞砸了。我通过退出函数而不是返回true来修复它。因此,通过某种方式修复了自定义功能的问题。

但是我在几个领域使用CK编辑器。那些字段现在也被搞砸了显示主页html而不是我喂的原始(当编辑回来时)。我发现CK编辑器页面也发生了ajax重定向。

如何在全球范围内解决此问题?

1 个答案:

答案 0 :(得分:1)

似乎在某些init挂钩中可能会发生重定向。检查这个的一种方法是调试drupal_goto()函数(假设使用它完成重定向)。最简单的方法是在IDE中使用调试器并检查整个调用堆栈。

另一种方法是在drupal_goto()函数中,就在

之前
header('Location: ' . $url, TRUE, $http_response_code);
你输入这段代码:

ob_start();
$backtrace = debug_backtrace();
foreach ($backtrace as $key => $value) {
  unset($backtrace[$key]['args']);
}
echo '<pre>'; print_r($backtrace);
$output = ob_get_clean();
watchdog('redirect_debug', 'Redirect to url: ' . $url. ' from ' . request_uri() . '. Call stack: ' .  $output, NULL);

然后,运行ajax请求,然后去检查看门狗条目。如果重定向由drupal_goto()完成,您将看到所有调用堆栈,因此您可以看到从哪一行完成。

如何实际修复它,它实际上取决于重定向的来源。