0

我有这个简单的代码

debug($this->referer('foo', true));
debug($this->referer('foo', false));

当我来自本地地址时,我希望获得相同的结果,即

'http://example.com/index.php/admin/groups'
'http://example.com/index.php/admin/groups'

相反,我得到了这个:

'http://example.com/index.php/admin/users/foo'
'http://example.com/index.php/admin/groups'

正如您所看到的,当我将 local 设置为 true cakePHP referer() 时,即使引用者在本地服务器中,也会返回默认地址

我正在使用 cakePHP 2.4

4

1 回答 1

0

通常index.php不应该显示在 URL 中,除非您mod_rewrite禁用了 apache 和规则(或等效于其他 http 服务器)并且您启用了 Cake 的内置漂亮 URL 的.

根据代码库$this->referer(),会/在以下情况下返回$local = true

  1. env('HTTP_REFERER')为空且尚未App.fullBaseUrlcore.php.
  2. 您的env('HTTP_REFERER')开头并不完全是App.fullBaseUrl . $this->webroot(即www.example.com/index.php)。

此外,如果env('HTTP_X_FORWARDED_HOST')设置它会替换env('HTTP_REFERER')上面的引用。

从这两种选择来看,我会把钱放在App.fullBaseUrl不被定义上:)

于 2013-09-16T21:43:39.440 回答