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

apacheとルール (または他の http サーバーと同等のもの) を無効にし、Cake の組み込みのプリティ URLを有効にしない限り、通常index.phpは URL に表示されるべきではありません。mod_rewrite

コード ベース によると、は次の状況で$this->referer()を返します。/$local = true

  1. env('HTTP_REFERER')が空であり、 で設定していません。App.fullBaseUrlcore.php
  2. あなたは正確に(つまり)env('HTTP_REFERER')で始まりません。App.fullBaseUrl . $this->webrootwww.example.com/index.php

また、env('HTTP_X_FORWARDED_HOST')が設定されている場合は、上記の参照を置き換えますenv('HTTP_REFERER')

2つの選択肢から判断すると、App.fullBaseUrl定義されていないことにお金をかけます:)

于 2013-09-16T21:43:39.440 に答える