在 OpenCart 控制器中检测 AJAX 请求
Detect AJAX request in OpenCart Controller
我正在 OpenCart 3 中的一些控制器上工作,我希望其中一个控制器功能只能通过 AJAX 请求访问。
我尝试使用 $_SERVER['HTTP_X_REQUESTED_WITH'] 变量,但 OC 说该变量未定义。
此致
pcosta94
实际上 OpenCart 不会删除 $_SERVER 变量。它只是将它们传递给 $this->server。问题是 'HTTP_X_REQUESTED_WITH' 仅在有 AJAX 调用时设置。否则会报错。
您可以通过将此代码添加到 line 32
上的文件 system/library/request.php
来测试您的任何请求是否已通过 AJAX 发出
在 $this->server = $this->clean($_SERVER);
之后添加:
if(isset($this->server['HTTP_X_REQUESTED_WITH'])){
echo '<script>console.log(' . json_encode($this->server['HTTP_X_REQUESTED_WITH']) .')</script>';
}
然后打开您的 OpenCart 前端并访问任何产品页面,您应该会在浏览器控制台中看到 XMLHttpRequest
像这样
http://joxi.ru/MAjo6vWTjZZjBr
this is because on the product page the reviews are loaded via AJAX. On homepage there are no AJAX calls, so you shouldn't see anything in the console.
希望对您有所帮助。
我正在 OpenCart 3 中的一些控制器上工作,我希望其中一个控制器功能只能通过 AJAX 请求访问。 我尝试使用 $_SERVER['HTTP_X_REQUESTED_WITH'] 变量,但 OC 说该变量未定义。
此致
pcosta94
实际上 OpenCart 不会删除 $_SERVER 变量。它只是将它们传递给 $this->server。问题是 'HTTP_X_REQUESTED_WITH' 仅在有 AJAX 调用时设置。否则会报错。
您可以通过将此代码添加到 line 32
system/library/request.php
来测试您的任何请求是否已通过 AJAX 发出
在 $this->server = $this->clean($_SERVER);
之后添加:
if(isset($this->server['HTTP_X_REQUESTED_WITH'])){
echo '<script>console.log(' . json_encode($this->server['HTTP_X_REQUESTED_WITH']) .')</script>';
}
然后打开您的 OpenCart 前端并访问任何产品页面,您应该会在浏览器控制台中看到 XMLHttpRequest
像这样 http://joxi.ru/MAjo6vWTjZZjBr
this is because on the product page the reviews are loaded via AJAX. On homepage there are no AJAX calls, so you shouldn't see anything in the console.
希望对您有所帮助。