2 追蹤者

類別 yii\web\Request

繼承yii\web\Request » yii\base\Request » yii\base\Component » yii\base\BaseObject
實作yii\base\Configurable
自版本起可用2.0
原始碼 https://github.com/yiisoft/yii2/blob/master/framework/web/Request.php

web Request 類別代表一個 HTTP 請求。

它封裝了 $_SERVER 變數,並解決了不同 Web 伺服器之間的不一致性。此外,它還提供了一個介面,用於從 $_POST、$_GET、$_COOKIES 和透過其他 HTTP 方法(如 PUT 或 DELETE)傳送的 REST 參數中檢索請求參數。

Request 預設在 yii\web\Application 中配置為應用程式元件。您可以透過 Yii::$app->request 存取該實例。

有關 Request 的更多詳細資訊和使用方法,請參閱關於請求的指南文章

公開屬性

隱藏繼承的屬性

屬性 類型 描述 定義於
$absoluteUrl string 目前請求的絕對 URL。 yii\web\Request
$acceptableContentTypes array 依據品質分數排序的內容類型。 yii\web\Request
$acceptableLanguages array 依據偏好程度排序的語言。 yii\web\Request
$authCredentials array 包含兩個元素的陣列:- 0:透過 HTTP 驗證傳送的使用者名稱,如果未提供使用者名稱則為 null - 1:透過 HTTP 驗證傳送的密碼,如果未提供密碼則為 null yii\web\Request
$authPassword string|null 透過 HTTP 驗證傳送的密碼,如果未提供密碼則為 null yii\web\Request
$authUser string|null 透過 HTTP 驗證傳送的使用者名稱,如果未提供使用者名稱則為 null yii\web\Request
$baseUrl string 應用程式的相對 URL。 yii\web\Request
$behaviors yii\base\Behavior[] 附加到此組件的行為列表。 yii\base\Component
$bodyParams array|object 請求 body 中提供的請求參數。 yii\web\Request
$contentType string 請求內容類型。 yii\web\Request
$cookieValidationKey string 用於 Cookie 驗證的密鑰。 yii\web\Request
$cookies yii\web\CookieCollection Cookie 集合。 yii\web\Request
$csrfCookie array 用於建立 CSRF Cookie 的配置。 yii\web\Request
$csrfParam string 用於防止 CSRF 的令牌名稱。 yii\web\Request
$csrfToken string 用於執行 CSRF 驗證的令牌。 yii\web\Request
$csrfTokenFromHeader string|null 瀏覽器透過 CSRF_HEADER 傳送的 CSRF 令牌。 yii\web\Request
$eTags array 實體標籤。 yii\web\Request
$enableCookieValidation boolean 是否應驗證 Cookie,以確保它們未被篡改。 yii\web\Request
$enableCsrfCookie boolean 是否使用 Cookie 持續保存 CSRF 令牌。 yii\web\Request
$enableCsrfValidation boolean 是否啟用 CSRF(跨站請求偽造)驗證。 yii\web\Request
$headers yii\web\HeaderCollection Header 集合。 yii\web\Request
$hostInfo string|null 請求 URL 的 Schema 和主機名稱部分(如果需要,包含端口號)(例如 https://yii.dev.org.tw),如果無法從 $_SERVER 取得且未設定,則為 null。 yii\web\Request
$hostName string|null 請求 URL 的主機名稱部分(例如 www.yiiframework.com)。 yii\web\Request
$ipHeaders string[] 代理伺服器儲存真實客戶端 IP 的 Header 列表。 yii\web\Request
$isAjax boolean 這是否為 AJAX (XMLHttpRequest) 請求。 yii\web\Request
$isConsoleRequest boolean 指示當前請求是否透過 Console 介面發出的值。 yii\base\Request
$isDelete boolean 這是否為 DELETE 請求。 yii\web\Request
$isFlash boolean 這是否為 Adobe Flash 或 Adobe Flex 請求。 yii\web\Request
$isGet boolean 這是否為 GET 請求。 yii\web\Request
$isHead boolean 這是否為 HEAD 請求。 yii\web\Request
$isOptions boolean 這是否為 OPTIONS 請求。 yii\web\Request
$isPatch boolean 這是否為 PATCH 請求。 yii\web\Request
$isPjax boolean 這是否為 PJAX 請求。 yii\web\Request
$isPost boolean 這是否為 POST 請求。 yii\web\Request
$isPut boolean 這是否為 PUT 請求。 yii\web\Request
$isSecureConnection boolean 請求是否透過安全通道 (https) 傳送。 yii\web\Request
$method string 請求方法,例如 GET、POST、HEAD、PUT、PATCH、DELETE。 yii\web\Request
$methodParam string 用於指示請求是否為透過 POST 通道的 PUT、PATCH 或 DELETE 請求的 POST 參數名稱。 yii\web\Request
$origin string|null CORS 請求的 URL Origin,如果不可用則為 null yii\web\Request
$parsers array 用於將原始 HTTP 請求 body 轉換為 $bodyParams 的解析器。 yii\web\Request
$pathInfo string 請求 URL 中,在入口腳本之後和問號之前的部分。 yii\web\Request
$port integer 不安全請求的端口號。 yii\web\Request
$portHeaders string[] 代理伺服器儲存真實請求端口的 Header 列表。 yii\web\Request
$preferredLanguage string 應用程式應使用的語言。 yii\web\Request
$queryParams array 請求 GET 參數值。 yii\web\Request
$queryString string 請求 URL 中,在問號之後的部分。 yii\web\Request
$rawBody string 請求 body。 yii\web\Request
$referrer string|null URL Referrer,如果不可用則為 null。 yii\web\Request
$remoteHost string|null 遠端主機名稱,如果不可用則為 null yii\web\Request
$remoteIP string|null 遠端 IP 位址,如果不可用則為 null yii\web\Request
$scriptFile string 入口腳本檔案路徑。 yii\web\Request
$scriptUrl string 入口腳本的相對 URL。 yii\web\Request
$secureHeaders array 預設情況下,受信任主機配置約束的 Header 列表。 yii\web\Request
$securePort integer 安全請求的端口號。 yii\web\Request
$secureProtocolHeaders array 用於檢查連線是否透過 HTTPS 建立的 Header 列表。 yii\web\Request
$serverName string|null 伺服器名稱,如果不可用則為 null。 yii\web\Request
$serverPort integer|null 伺服器端口號,如果不可用則為 null。 yii\web\Request
$trustedHosts array 用於信任安全相關 Header 的配置。 yii\web\Request
$url string 目前請求的相對 URL。 yii\web\Request
$userAgent string|null User Agent,如果不可用則為 null。 yii\web\Request
$userHost string|null 使用者主機名稱,如果不可用則為 null。 yii\web\Request
$userIP string|null 使用者 IP 位址,如果不可用則為 null。 yii\web\Request

公共方法

隱藏繼承的方法

方法 描述 定義於
__call() 呼叫指定的非類別方法。 yii\base\Component
__clone() 在透過複製現有物件建立物件後,會呼叫此方法。 yii\base\Component
__construct() 建構子。 yii\base\BaseObject
__get() 傳回組件屬性的值。 yii\base\Component
__isset() 檢查屬性是否已設定,即已定義且非 null。 yii\base\Component
__set() 設定組件屬性的值。 yii\base\Component
__unset() 將組件屬性設定為 null。 yii\base\Component
attachBehavior() 將行為附加到此組件。 yii\base\Component
attachBehaviors() 將行為列表附加到組件。 yii\base\Component
behaviors() 傳回此組件應表現為的行為列表。 yii\base\Component
canGetProperty() 傳回一個值,指示屬性是否可讀取。 yii\base\Component
canSetProperty() 傳回一個值,指示屬性是否可設定。 yii\base\Component
className() 傳回此類別的完整名稱。 yii\base\BaseObject
detachBehavior() 從組件分離行為。 yii\base\Component
detachBehaviors() 從組件分離所有行為。 yii\base\Component
ensureBehaviors() 確保在 behaviors() 中宣告的行為已附加到此組件。 yii\base\Component
get() 傳回具有指定名稱的 GET 參數。如果未指定名稱,則傳回所有 GET 參數的陣列。 yii\web\Request
getAbsoluteUrl() 傳回目前請求的絕對 URL。 yii\web\Request
getAcceptableContentTypes() 傳回終端使用者可接受的內容類型。 yii\web\Request
getAcceptableLanguages() 傳回終端使用者可接受的語言。 yii\web\Request
getAuthCredentials() yii\web\Request
getAuthPassword() yii\web\Request
getAuthUser() yii\web\Request
getBaseUrl() 傳回應用程式的相對 URL。 yii\web\Request
getBehavior() 傳回指定的行為物件。 yii\base\Component
getBehaviors() 傳回附加到此組件的所有行為。 yii\base\Component
getBodyParam() 傳回指定的請求 body 參數值。 yii\web\Request
getBodyParams() 傳回請求 body 中提供的請求參數。 yii\web\Request
getContentType() 傳回請求內容類型。Content-Type Header 欄位指示 getRawBody() 中包含的資料的 MIME 類型,或者在 HEAD 方法的情況下,指示如果請求為 GET 時本應傳送的媒體類型。 yii\web\Request
getCookies() 傳回 Cookie 集合。 yii\web\Request
getCsrfToken() 傳回用於執行 CSRF 驗證的令牌。 yii\web\Request
getCsrfTokenFromHeader() yii\web\Request
getETags() 取得 Etags。 yii\web\Request
getHeaders() 傳回 Header 集合。 yii\web\Request
getHostInfo() 傳回當前請求 URL 的 Schema 和主機部分。 yii\web\Request
getHostName() 傳回當前請求 URL 的主機部分。 yii\web\Request
getIsAjax() 傳回這是否為 AJAX (XMLHttpRequest) 請求。 yii\web\Request
getIsConsoleRequest() 傳回一個值,指示當前請求是否透過命令列發出。 yii\base\Request
getIsDelete() 傳回這是否為 DELETE 請求。 yii\web\Request
getIsFlash() 傳回這是否為 Adobe Flash 或 Flex 請求。 yii\web\Request
getIsGet() 傳回這是否為 GET 請求。 yii\web\Request
getIsHead() 傳回這是否為 HEAD 請求。 yii\web\Request
getIsOptions() 傳回這是否為 OPTIONS 請求。 yii\web\Request
getIsPatch() 傳回這是否為 PATCH 請求。 yii\web\Request
getIsPjax() 傳回這是否為 PJAX 請求。 yii\web\Request
getIsPost() 傳回這是否為 POST 請求。 yii\web\Request
getIsPut() 傳回這是否為 PUT 請求。 yii\web\Request
getIsSecureConnection() 傳回請求是否透過安全通道 (https) 傳送。 yii\web\Request
getMethod() 傳回當前請求的方法(例如 GET、POST、HEAD、PUT、PATCH、DELETE)。 yii\web\Request
getOrigin() 傳回 CORS 請求的 URL Origin。 yii\web\Request
getPathInfo() 傳回目前請求 URL 的路徑資訊。 yii\web\Request
getPort() 傳回用於不安全請求的端口。 yii\web\Request
getPreferredLanguage() 傳回此應用程式應使用的使用者偏好語言。 yii\web\Request
getQueryParam() 傳回指定的 GET 參數值。 yii\web\Request
getQueryParams() 傳回在 $queryString 中提供的請求參數。 yii\web\Request
getQueryString() 傳回請求 URL 中,在問號之後的部分。 yii\web\Request
getRawBody() 傳回原始 HTTP 請求 body。 yii\web\Request
getReferrer() 傳回 URL Referrer。 yii\web\Request
getRemoteHost() 傳回此連線另一端的主機名稱。 yii\web\Request
getRemoteIP() 傳回此連線另一端的 IP。 yii\web\Request
getScriptFile() 傳回入口腳本檔案路徑。 yii\web\Request
getScriptUrl() 傳回入口腳本的相對 URL。 yii\web\Request
getSecurePort() 傳回用於安全請求的端口。 yii\web\Request
getServerName() 傳回伺服器名稱。 yii\web\Request
getServerPort() 傳回伺服器端口號。如果透過轉發 Header(例如 'X-Forwarded-Port')指定了端口,且遠端主機是「受信任主機」,則將使用該端口(請參閱 $portHeaders),否則將傳回預設伺服器端口。 yii\web\Request
getUrl() 傳回目前請求的相對 URL。 yii\web\Request
getUserAgent() 傳回 User Agent。 yii\web\Request
getUserHost() 傳回使用者主機名稱。 yii\web\Request
getUserIP() 傳回使用者 IP 位址。 yii\web\Request
hasEventHandlers() 傳回一個值,指示是否有名為事件附加任何處理程序。 yii\base\Component
hasMethod() 傳回一個值,指示是否已定義方法。 yii\base\Component
hasProperty() 傳回一個值,指示是否為此組件定義了屬性。 yii\base\Component
init() 初始化物件。 yii\base\BaseObject
off() 從此組件分離現有的事件處理程序。 yii\base\Component
on() 將事件處理程序附加到事件。 yii\base\Component
parseAcceptHeader() 解析給定的 Accept(或 Accept-Language)Header。 yii\web\Request
post() 傳回具有指定名稱的 POST 參數。如果未指定名稱,則傳回所有 POST 參數的陣列。 yii\web\Request
resolve() 將當前請求解析為路由和相關聯的參數。 yii\web\Request
setAcceptableContentTypes() 設定可接受的內容類型。 yii\web\Request
setAcceptableLanguages() yii\web\Request
setBaseUrl() 設定應用程式的相對 URL。 yii\web\Request
setBodyParams() 設定請求 body 參數。 yii\web\Request
setHostInfo() 設定應用程式 URL 的 Schema 和主機部分。 yii\web\Request
setIsConsoleRequest() 設定一個值,指示當前請求是否透過命令列發出。 yii\base\Request
setPathInfo() 設定當前請求的路徑資訊。 yii\web\Request
setPort() 設定用於不安全請求的端口。 yii\web\Request
setQueryParams() 設定請求 $queryString 參數。 yii\web\Request
setRawBody() 設定原始 HTTP 請求 body,此方法主要由測試腳本用於模擬原始 HTTP 請求。 yii\web\Request
setScriptFile() 設定入口腳本檔案路徑。 yii\web\Request
setScriptUrl() 設定應用程式入口腳本的相對 URL。 yii\web\Request
setSecurePort() 設定用於安全請求的端口。 yii\web\Request
setUrl() 設定目前請求的相對 URL。 yii\web\Request
trigger() 觸發事件。 yii\base\Component
validateCsrfToken() 執行 CSRF 驗證。 yii\web\Request

保護方法

隱藏繼承的方法

方法 描述 定義於
createCsrfCookie() 建立包含隨機產生 CSRF 令牌的 Cookie。 yii\web\Request
filterHeaders() 根據 $trustedHosts 過濾 Header。 yii\web\Request
generateCsrfToken() 產生未遮罩的隨機令牌,用於執行 CSRF 驗證。 yii\web\Request
getIpValidator() 建立 yii\validators\IpValidator 的實例。 yii\web\Request
getSecureForwardedHeaderParts() 傳回已解碼的轉發 Header yii\web\Request
getSecureForwardedHeaderTrustedPart() 取得令牌的第一個 Forwarded Header 值 yii\web\Request
getSecureForwardedHeaderTrustedParts() 僅取得受信任的 Forwarded Header 部分 yii\web\Request
getTrustedHeaders() 根據 $trustedHosts 的受信任 Header。 yii\web\Request
getUserIpFromIpHeader() 從 IP Header 傳回使用者 IP。 yii\web\Request
getUserIpFromIpHeaders() $ipHeaders 傳回使用者 IP 位址。 yii\web\Request
loadCookies() $_COOKIE 轉換為 yii\web\Cookie 的陣列。 yii\web\Request
loadCsrfToken() 從 Cookie 或 Session 載入 CSRF 令牌。 yii\web\Request
resolvePathInfo() 解析目前請求 URL 的路徑資訊部分。 yii\web\Request
resolveRequestUri() 解析目前請求 URL 的請求 URI 部分。 yii\web\Request

常數

隱藏繼承的常數

常數 描述 定義於
CSRF_HEADER 'X-CSRF-Token' 用於傳送 CSRF 令牌的 HTTP Header 名稱。 yii\web\Request
CSRF_MASK_LENGTH 8 CSRF 令牌遮罩的長度。 自 2.0.12 版本起已棄用。遮罩長度現在等於令牌長度。 yii\web\Request

屬性詳細資訊

隱藏繼承的屬性

$absoluteUrl 公共屬性

目前請求的絕對 URL。

public string $absoluteUrl null
$acceptableContentTypes 公共屬性

依據品質分數排序的內容類型。分數最高的類型將首先傳回。陣列鍵為內容類型,而陣列值為 Header 中給定的相應品質分數和其他參數。

$acceptableLanguages 公共屬性

依據偏好程度排序的語言。第一個元素代表最偏好的語言。

$authCredentials 公共屬性

包含兩個元素的陣列:- 0:透過 HTTP 驗證傳送的使用者名稱,如果未提供使用者名稱則為 null - 1:透過 HTTP 驗證傳送的密碼,如果未提供密碼則為 null

public array $authCredentials null
$authPassword 公共屬性

透過 HTTP 驗證傳送的密碼,如果未提供密碼則為 null

public string|null $authPassword null
$authUser 公共屬性

透過 HTTP 驗證傳送的使用者名稱,如果未提供使用者名稱則為 null

public string|null $authUser null
$baseUrl 公共屬性

應用程式的相對 URL。

public string $baseUrl null
$bodyParams 公共屬性

請求 body 中提供的請求參數。

public array|object $bodyParams null
$contentType 公共屬性

請求內容類型。如果此資訊不可用,則傳回空字串。

public string $contentType null
$cookieValidationKey 公共屬性

用於 Cookie 驗證的密鑰。如果 $enableCookieValidation 為 true,則必須設定此屬性。

$cookies 公共屬性

Cookie 集合。

$csrfCookie 公共屬性

用於建立 CSRF Cookie 的配置。僅當 $enableCsrfValidation$enableCsrfCookie 皆為 true 時,才會使用此屬性。

public array $csrfCookie = [
    
'httpOnly' => true,
]
$csrfParam 公共屬性

用於防止 CSRF 的令牌名稱。預設值為 '_csrf'。僅當 $enableCsrfValidation 為 true 時,才會使用此屬性。

public string $csrfParam '_csrf'
$csrfToken 公共屬性

用於執行 CSRF 驗證的令牌。

public string $csrfToken null
$csrfTokenFromHeader 公共屬性

瀏覽器透過 CSRF_HEADER 傳送的 CSRF 令牌。如果未傳送此 Header,則傳回 Null。

$eTags 公共屬性

實體標籤。

public array $eTags null
$enableCookieValidation 公共屬性

是否應驗證 Cookie,以確保它們未被篡改。預設值為 true。

$enableCsrfCookie 公開屬性

是否使用 Cookie 來持久化 CSRF 令牌。若為 false,CSRF 令牌將會以 $csrfParam 為名稱儲存在 session 中。請注意,雖然將 CSRF 令牌儲存在 session 中可以提高安全性,但這會要求每個頁面都啟動 session,進而降低您的網站效能。

public boolean $enableCsrfCookie true
$enableCsrfValidation 公開屬性

是否啟用 CSRF(跨站請求偽造)驗證。預設值為 true。當 CSRF 驗證啟用時,提交到 Yii Web 應用程式的表單必須源自同一個應用程式。否則,將會拋出 400 HTTP 例外。

請注意,此功能需要使用者端接受 Cookie。此外,要使用此功能,透過 POST 方法提交的表單必須包含一個隱藏的輸入欄位,其名稱由 $csrfParam 指定。您可以使用 yii\helpers\Html::beginForm() 來產生這個隱藏的輸入欄位。

在 JavaScript 中,您可以分別透過 yii.getCsrfParam()yii.getCsrfToken() 取得 $csrfParam$csrfToken 的值。yii\web\YiiAsset 資源必須被註冊。您也需要在頁面中包含 CSRF meta 標籤,方法是使用 yii\helpers\Html::csrfMetaTags()

另請參閱

$headers 公開屬性

Header 集合。

$hostInfo 公開屬性

請求 URL 的協定和主機名稱部分(必要時包含埠號)(例如:https://yii.dev.org.tw)。如果無法從 $_SERVER 取得且未設定,則為 null。關於此屬性的安全性相關注意事項,請參閱 getHostInfo()

public string|null $hostInfo null
$hostName 公開屬性

請求 URL 的主機名稱部分(例如 www.yiiframework.com)。

public string|null $hostName null
$ipHeaders 公開屬性 (自 2.0.13 版本起可用)

代理伺服器儲存真實客戶端 IP 的標頭列表。不建議在此處放置不安全的標頭。若要根據 RFC 7239 使用 Forwarded 標頭,則必須將該標頭添加到 $secureHeaders 列表中。標頭名稱的比對不區分大小寫。

另請參閱

public string[] $ipHeaders = [
    
'X-Forwarded-For',
]
$isAjax 公開屬性

這是否為 AJAX (XMLHttpRequest) 請求。

public boolean $isAjax null
$isDelete 公開屬性

這是否為 DELETE 請求。

public boolean $isDelete null
$isFlash 公開屬性

這是否為 Adobe Flash 或 Adobe Flex 請求。

public boolean $isFlash null
$isGet 公開屬性

這是否為 GET 請求。

public boolean $isGet null
$isHead 公開屬性

這是否為 HEAD 請求。

public boolean $isHead null
$isOptions 公開屬性

這是否為 OPTIONS 請求。

public boolean $isOptions null
$isPatch 公開屬性

這是否為 PATCH 請求。

public boolean $isPatch null
$isPjax 公開屬性

這是否為 PJAX 請求。

public boolean $isPjax null
$isPost 公開屬性

這是否為 POST 請求。

public boolean $isPost null
$isPut 公開屬性

這是否為 PUT 請求。

public boolean $isPut null
$isSecureConnection 公開屬性

請求是否透過安全通道 (https) 傳送。

$method 公開屬性

請求方法,例如 GET、POST、HEAD、PUT、PATCH、DELETE。傳回的值會轉換為大寫。

public string $method null
$methodParam 公開屬性

用於指示請求是否為透過 POST 通道的 PUT、PATCH 或 DELETE 請求的 POST 參數名稱。預設值為 '_method'。

另請參閱

public string $methodParam '_method'
$origin 公開屬性

CORS 請求的 URL Origin,如果不可用則為 null

public string|null $origin null
$parsers 公開屬性

用於將原始 HTTP 請求主體轉換為 $bodyParams 的解析器。陣列的鍵是請求的 Content-Types,而陣列的值是用於 建立解析器物件 的相應配置。解析器必須實作 yii\web\RequestParserInterface

若要啟用 JSON 請求的解析,您可以使用 yii\web\JsonParser 類別,如下例所示

[
    'application/json' => 'yii\web\JsonParser',
]

若要註冊一個用於解析所有請求類型的解析器,您可以使用 '*' 作為陣列的鍵。如果沒有其他類型匹配,則將使用此解析器作為後備方案。

另請參閱 getBodyParams()

public array $parsers = []
$pathInfo 公開屬性

請求 URL 中在入口腳本之後和問號之前的部分。請注意,傳回的路徑資訊已經過 URL 解碼。

public string $pathInfo null
$port 公開屬性

不安全請求的端口號。

public integer $port null
$portHeaders 公開屬性 (自 2.0.46 版本起可用)

代理伺服器儲存真實請求埠號的標頭列表。不建議在此處放置不安全的標頭。若要使用 Forwarded Port,則必須將該標頭添加到 $secureHeaders 列表中。標頭名稱的比對不區分大小寫。

另請參閱

public string[] $portHeaders = [
    
'X-Forwarded-Port',
]
$preferredLanguage 公開唯讀屬性

應用程式應使用的語言。

public string getPreferredLanguage ( array $languages = [] )
$queryParams 公開屬性

請求 GET 參數值。

public array $queryParams null
$queryString 公開屬性

請求 URL 中,在問號之後的部分。

public string $queryString null
$rawBody 公開屬性

請求 body。

public string $rawBody null
$referrer 公開屬性

URL Referrer,如果不可用則為 null。

public string|null $referrer null
$remoteHost 公開屬性

遠端主機名稱,如果不可用則為 null

public string|null $remoteHost null
$remoteIP 公開屬性

遠端 IP 位址,如果不可用則為 null

public string|null $remoteIP null
$scriptFile 公開屬性

入口腳本檔案路徑。

public string $scriptFile null
$scriptUrl 公開屬性

入口腳本的相對 URL。

public string $scriptUrl null
$secureHeaders 公開屬性 (自 2.0.13 版本起可用)

預設情況下,受信任主機配置約束的標頭列表。除非在 $trustedHosts 中明確允許,否則這些標頭將會被過濾。如果列表包含 Forwarded 標頭,則將根據 RFC 7239 進行處理。標頭名稱的比對不區分大小寫。

另請參閱

public array $secureHeaders = [
    
'X-Forwarded-For',
    
'X-Forwarded-Host',
    
'X-Forwarded-Proto',
    
'X-Forwarded-Port',
    
'Front-End-Https',
    
'X-Rewrite-Url',
    
'X-Original-Host',
]
$securePort 公開屬性

安全請求的端口號。

public integer $securePort null
$secureProtocolHeaders 公開屬性 (自 2.0.13 版本起可用)

用於檢查以判斷連線是否透過 HTTPS 建立的標頭列表。陣列的鍵是標頭名稱,而陣列的值是標頭值的列表,這些值指示安全連線。標頭名稱和值的比對不區分大小寫。不建議在此處放置不安全的標頭。

另請參閱

public array $secureProtocolHeaders = [
    
'X-Forwarded-Proto' => [
        
'https',
    ],
    
'Front-End-Https' => [
        
'on',
    ],
]
$serverName 公開屬性

伺服器名稱,如果不可用則為 null。

public string|null $serverName null
$serverPort 公開屬性

伺服器端口號,如果不可用則為 null。

public integer|null $serverPort null
$trustedHosts public property (available since version 2.0.13)

用於信任安全相關 Header 的配置。

陣列的鍵值為 IPv4 或 IPv6 IP 位址,以 CIDR 標記法表示,用於比對客戶端。

陣列的值是要信任的標頭列表。這些標頭將與 $secureHeaders 比對,以判斷哪些標頭允許由指定的 host 發送。標頭名稱的大小寫必須與 $secureHeaders 中指定的相同。

例如,要信任 $secureHeaders 中列出的所有標頭,適用於 192.168.0.0-192.168.0.254 範圍內的 IP 位址,請寫入以下內容

[
    '192.168.0.0/24',
]

若要僅信任來自 10.0.0.1X-Forwarded-For 標頭,請使用

[
    '10.0.0.1' => ['X-Forwarded-For']
]

預設情況下,信任來自所有 host 的所有標頭,但 $secureHeaders 中列出的標頭除外。比對會依序嘗試,並在 IP 符合時停止搜尋。

資訊:比對使用 yii\validators\IpValidator 執行。請參閱 IpValidator::::setRanges()yii\validators\IpValidator::$networks 以取得進階比對。

另請參閱 $secureHeaders

public array $trustedHosts = []
$url public property

目前請求的相對 URL。請注意,返回的 URI 可能會根據客戶端進行 URL 編碼。

public string $url null
$userAgent public property

User Agent,如果不可用則為 null。

public string|null $userAgent null
$userHost public property

使用者主機名稱,如果不可用則為 null。

public string|null $userHost null
$userIP public property

使用者 IP 位址,如果不可用則為 null。

public string|null $userIP null

方法詳細資訊

隱藏繼承的方法

__call() public method

定義於: yii\base\Component::__call()

呼叫指定的非類別方法。

此方法將檢查是否有任何附加的行為具有指定的名稱方法,如果有,則會執行它。

請勿直接呼叫此方法,因為它是一個 PHP 魔術方法,當調用未知方法時會隱式呼叫。

public mixed __call ( $name, $params )
$name string

方法名稱

$params array

方法參數

return mixed

方法傳回值

throws yii\base\UnknownMethodException

當呼叫未知方法時

                public function __call($name, $params)
{
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $object) {
        if ($object->hasMethod($name)) {
            return call_user_func_array([$object, $name], $params);
        }
    }
    throw new UnknownMethodException('Calling unknown method: ' . get_class($this) . "::$name()");
}

            
__clone() public method

定義於: yii\base\Component::__clone()

在透過複製現有物件建立物件後,會呼叫此方法。

它會移除所有行為,因為它們都附加到舊物件。

public void __clone ( )

                public function __clone()
{
    $this->_events = [];
    $this->_eventWildcards = [];
    $this->_behaviors = null;
}

            
__construct() public method

定義於: yii\base\BaseObject::__construct()

建構子。

預設實作會執行兩件事

  • 使用給定的組態 $config 初始化物件。
  • 呼叫 init()

如果此方法在子類別中被覆寫,建議

  • 建構子的最後一個參數是組態陣列,例如此處的 $config
  • 在建構子的結尾呼叫父類別實作。
public void __construct ( $config = [] )
$config array

將用於初始化物件屬性的名稱-值對

                public function __construct($config = [])
{
    if (!empty($config)) {
        Yii::configure($this, $config);
    }
    $this->init();
}

            
__get() public method

定義於: yii\base\Component::__get()

傳回組件屬性的值。

此方法將依以下順序檢查並採取相應的動作

  • getter 定義的屬性:傳回 getter 結果
  • 行為的屬性:傳回行為屬性值

請勿直接呼叫此方法,因為它是一個 PHP 魔術方法,當執行 $value = $component->property; 時會隱式呼叫。

另請參閱 __set()

public mixed __get ( $name )
$name string

屬性名稱

return mixed

屬性值或行為屬性的值

throws yii\base\UnknownPropertyException

如果未定義屬性

throws yii\base\InvalidCallException

如果屬性為唯寫。

                public function __get($name)
{
    $getter = 'get' . $name;
    if (method_exists($this, $getter)) {
        // read property, e.g. getName()
        return $this->$getter();
    }
    // behavior property
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $behavior) {
        if ($behavior->canGetProperty($name)) {
            return $behavior->$name;
        }
    }
    if (method_exists($this, 'set' . $name)) {
        throw new InvalidCallException('Getting write-only property: ' . get_class($this) . '::' . $name);
    }
    throw new UnknownPropertyException('Getting unknown property: ' . get_class($this) . '::' . $name);
}

            
__isset() public method

定義於: yii\base\Component::__isset()

檢查屬性是否已設定,即已定義且非 null。

此方法將依以下順序檢查並採取相應的動作

  • setter 定義的屬性:傳回屬性是否已設定
  • 行為的屬性:傳回屬性是否已設定
  • 對於不存在的屬性,傳回 false

請勿直接呼叫此方法,因為它是一個 PHP 魔術方法,當執行 isset($component->property) 時會隱式呼叫。

另請參閱 https://php.dev.org.tw/manual/en/function.isset.php

public boolean __isset ( $name )
$name string

屬性名稱或事件名稱

return boolean

具名屬性是否已設定

                public function __isset($name)
{
    $getter = 'get' . $name;
    if (method_exists($this, $getter)) {
        return $this->$getter() !== null;
    }
    // behavior property
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $behavior) {
        if ($behavior->canGetProperty($name)) {
            return $behavior->$name !== null;
        }
    }
    return false;
}

            
__set() public method

定義於: yii\base\Component::__set()

設定組件屬性的值。

此方法將依以下順序檢查並採取相應的動作

  • setter 定義的屬性:設定屬性值
  • 格式為 "on xyz" 的事件:將處理常式附加到事件 "xyz"
  • 格式為 "as xyz" 的行為:附加名為 "xyz" 的行為
  • 行為的屬性:設定行為屬性值

請勿直接呼叫此方法,因為它是一個 PHP 魔術方法,當執行 $component->property = $value; 時會隱式呼叫。

另請參閱 __get()

public void __set ( $name, $value )
$name string

屬性名稱或事件名稱

$value mixed

屬性值

throws yii\base\UnknownPropertyException

如果未定義屬性

throws yii\base\InvalidCallException

如果屬性為唯讀。

                public function __set($name, $value)
{
    $setter = 'set' . $name;
    if (method_exists($this, $setter)) {
        // set property
        $this->$setter($value);
        return;
    } elseif (strncmp($name, 'on ', 3) === 0) {
        // on event: attach event handler
        $this->on(trim(substr($name, 3)), $value);
        return;
    } elseif (strncmp($name, 'as ', 3) === 0) {
        // as behavior: attach behavior
        $name = trim(substr($name, 3));
        $this->attachBehavior($name, $value instanceof Behavior ? $value : Yii::createObject($value));
        return;
    }
    // behavior property
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $behavior) {
        if ($behavior->canSetProperty($name)) {
            $behavior->$name = $value;
            return;
        }
    }
    if (method_exists($this, 'get' . $name)) {
        throw new InvalidCallException('Setting read-only property: ' . get_class($this) . '::' . $name);
    }
    throw new UnknownPropertyException('Setting unknown property: ' . get_class($this) . '::' . $name);
}

            
__unset() public method

定義於: yii\base\Component::__unset()

將組件屬性設定為 null。

此方法將依以下順序檢查並採取相應的動作

  • setter 定義的屬性:將屬性值設定為 null
  • 行為的屬性:將屬性值設定為 null

請勿直接呼叫此方法,因為它是一個 PHP 魔術方法,當執行 unset($component->property) 時會隱式呼叫。

另請參閱 https://php.dev.org.tw/manual/en/function.unset.php

public void __unset ( $name )
$name string

屬性名稱

throws yii\base\InvalidCallException

如果屬性為唯讀。

                public function __unset($name)
{
    $setter = 'set' . $name;
    if (method_exists($this, $setter)) {
        $this->$setter(null);
        return;
    }
    // behavior property
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $behavior) {
        if ($behavior->canSetProperty($name)) {
            $behavior->$name = null;
            return;
        }
    }
    throw new InvalidCallException('Unsetting an unknown or read-only property: ' . get_class($this) . '::' . $name);
}

            
attachBehavior() public method

定義於: yii\base\Component::attachBehavior()

將行為附加到此組件。

此方法將根據給定的組態建立行為物件。之後,將透過呼叫 yii\base\Behavior::attach() 方法將行為物件附加到此元件。

另請參閱 detachBehavior()

public yii\base\Behavior attachBehavior ( $name, $behavior )
$name string

行為的名稱。

$behavior string|array|yii\base\Behavior

行為組態。這可以是以下其中之一

return yii\base\Behavior

行為物件

                public function attachBehavior($name, $behavior)
{
    $this->ensureBehaviors();
    return $this->attachBehaviorInternal($name, $behavior);
}

            
attachBehaviors() public method

定義於: yii\base\Component::attachBehaviors()

將行為列表附加到組件。

每個行為都由其名稱索引,並且應該是 yii\base\Behavior 物件、指定行為類別的字串,或是用於建立行為的組態陣列。

另請參閱 attachBehavior()

public void attachBehaviors ( $behaviors )
$behaviors array

要附加到元件的行為列表

                public function attachBehaviors($behaviors)
{
    $this->ensureBehaviors();
    foreach ($behaviors as $name => $behavior) {
        $this->attachBehaviorInternal($name, $behavior);
    }
}

            
behaviors() public method

定義於: yii\base\Component::behaviors()

傳回此組件應表現為的行為列表。

子類別可以覆寫此方法,以指定它們想要表現為的行為。

此方法的傳回值應該是由行為名稱索引的行為物件或組態陣列。行為組態可以是指定行為類別的字串,或具有以下結構的陣列

'behaviorName' => [
    'class' => 'BehaviorClass',
    'property1' => 'value1',
    'property2' => 'value2',
]

請注意,行為類別必須從 yii\base\Behavior 擴展。行為可以使用名稱或匿名方式附加。當名稱用作陣列鍵時,使用此名稱,稍後可以使用 getBehavior() 檢索行為,或使用 detachBehavior() 分離行為。匿名行為無法檢索或分離。

在此方法中宣告的行為將自動(按需)附加到元件。

public array behaviors ( )
return array

行為組態。

                public function behaviors()
{
    return [];
}

            
canGetProperty() public method

定義於: yii\base\Component::canGetProperty()

傳回一個值,指示屬性是否可讀取。

如果符合以下條件,則可以讀取屬性

  • 類別具有與指定名稱關聯的 getter 方法(在這種情況下,屬性名稱不區分大小寫);
  • 類別具有具有指定名稱的成員變數(當 $checkVars 為 true 時);
  • 附加的行為具有給定名稱的可讀屬性(當 $checkBehaviors 為 true 時)。

另請參閱 canSetProperty()

public boolean canGetProperty ( $name, $checkVars true, $checkBehaviors true )
$name string

屬性名稱

$checkVars boolean

是否將成員變數視為屬性

$checkBehaviors boolean

是否將行為的屬性視為此元件的屬性

return boolean

屬性是否可讀

                public function canGetProperty($name, $checkVars = true, $checkBehaviors = true)
{
    if (method_exists($this, 'get' . $name) || $checkVars && property_exists($this, $name)) {
        return true;
    } elseif ($checkBehaviors) {
        $this->ensureBehaviors();
        foreach ($this->_behaviors as $behavior) {
            if ($behavior->canGetProperty($name, $checkVars)) {
                return true;
            }
        }
    }
    return false;
}

            
canSetProperty() public method

定義於: yii\base\Component::canSetProperty()

傳回一個值,指示屬性是否可設定。

如果符合以下條件,則可以寫入屬性

  • 類別具有與指定名稱關聯的 setter 方法(在這種情況下,屬性名稱不區分大小寫);
  • 類別具有具有指定名稱的成員變數(當 $checkVars 為 true 時);
  • 附加的行為具有給定名稱的可寫屬性(當 $checkBehaviors 為 true 時)。

另請參閱 canGetProperty()

public boolean canSetProperty ( $name, $checkVars true, $checkBehaviors true )
$name string

屬性名稱

$checkVars boolean

是否將成員變數視為屬性

$checkBehaviors boolean

是否將行為的屬性視為此元件的屬性

return boolean

屬性是否可寫入

                public function canSetProperty($name, $checkVars = true, $checkBehaviors = true)
{
    if (method_exists($this, 'set' . $name) || $checkVars && property_exists($this, $name)) {
        return true;
    } elseif ($checkBehaviors) {
        $this->ensureBehaviors();
        foreach ($this->_behaviors as $behavior) {
            if ($behavior->canSetProperty($name, $checkVars)) {
                return true;
            }
        }
    }
    return false;
}

            
className() public static method
自 2.0.14 版本起已棄用。在 PHP >=5.5 上,請改用 ::class

定義於: yii\base\BaseObject::className()

傳回此類別的完整名稱。

public static string className ( )
return string

此類別的完整限定名稱。

                public static function className()
{
    return get_called_class();
}

            
createCsrfCookie() protected method

建立包含隨機產生 CSRF 令牌的 Cookie。

$csrfCookie 中指定的初始值將應用於產生的 cookie。

另請參閱 $enableCsrfValidation

protected yii\web\Cookie createCsrfCookie ( $token )
$token string

CSRF token

return yii\web\Cookie

產生的 cookie

                protected function createCsrfCookie($token)
{
    $options = $this->csrfCookie;
    return Yii::createObject(array_merge($options, [
        'class' => 'yii\web\Cookie',
        'name' => $this->csrfParam,
        'value' => $token,
    ]));
}

            
detachBehavior() public method

定義於: yii\base\Component::detachBehavior()

從組件分離行為。

將調用行為的 yii\base\Behavior::detach() 方法。

public yii\base\Behavior|null detachBehavior ( $name )
$name string

行為的名稱。

return yii\base\Behavior|null

分離的行為。如果行為不存在,則為 Null。

                public function detachBehavior($name)
{
    $this->ensureBehaviors();
    if (isset($this->_behaviors[$name])) {
        $behavior = $this->_behaviors[$name];
        unset($this->_behaviors[$name]);
        $behavior->detach();
        return $behavior;
    }
    return null;
}

            
detachBehaviors() public method

定義於: yii\base\Component::detachBehaviors()

從組件分離所有行為。

public void detachBehaviors ( )

                public function detachBehaviors()
{
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $name => $behavior) {
        $this->detachBehavior($name);
    }
}

            
ensureBehaviors() public method

定義於: yii\base\Component::ensureBehaviors()

確保在 behaviors() 中宣告的行為已附加到此組件。

public void ensureBehaviors ( )

                public function ensureBehaviors()
{
    if ($this->_behaviors === null) {
        $this->_behaviors = [];
        foreach ($this->behaviors() as $name => $behavior) {
            $this->attachBehaviorInternal($name, $behavior);
        }
    }
}

            
filterHeaders() protected method (available since version 2.0.13)

根據 $trustedHosts 過濾 Header。

protected void filterHeaders ( yii\web\HeaderCollection $headerCollection )
$headerCollection yii\web\HeaderCollection

                protected function filterHeaders(HeaderCollection $headerCollection)
{
    $trustedHeaders = $this->getTrustedHeaders();
    // remove all secure headers unless they are trusted
    foreach ($this->secureHeaders as $secureHeader) {
        if (!in_array($secureHeader, $trustedHeaders)) {
            $headerCollection->remove($secureHeader);
        }
    }
}

            
generateCsrfToken() protected method

產生未遮罩的隨機令牌,用於執行 CSRF 驗證。

protected string generateCsrfToken ( )
return string

用於 CSRF 驗證的隨機 token。

                protected function generateCsrfToken()
{
    $token = Yii::$app->getSecurity()->generateRandomString();
    if ($this->enableCsrfCookie) {
        $cookie = $this->createCsrfCookie($token);
        Yii::$app->getResponse()->getCookies()->add($cookie);
    } else {
        Yii::$app->getSession()->set($this->csrfParam, $token);
    }
    return $token;
}

            
get() public method

傳回具有指定名稱的 GET 參數。如果未指定名稱,則傳回所有 GET 參數的陣列。

public array|mixed get ( $name null, $defaultValue null )
$name string

參數名稱

$defaultValue mixed

如果參數不存在,則為預設參數值。

                public function get($name = null, $defaultValue = null)
{
    if ($name === null) {
        return $this->getQueryParams();
    }
    return $this->getQueryParam($name, $defaultValue);
}

            
getAbsoluteUrl() public method

傳回目前請求的絕對 URL。

這是 $hostInfo$url 串連的捷徑。

public string getAbsoluteUrl ( )
return string

目前請求的絕對 URL。

                public function getAbsoluteUrl()
{
    return $this->getHostInfo() . $this->getUrl();
}

            
getAcceptableContentTypes() public method

傳回終端使用者可接受的內容類型。

這由 Accept HTTP 標頭決定。例如:

$_SERVER['HTTP_ACCEPT'] = 'text/plain; q=0.5, application/json; version=1.0, application/xml; version=2.0;';
$types = $request->getAcceptableContentTypes();
print_r($types);
// displays:
// [
//     'application/json' => ['q' => 1, 'version' => '1.0'],
//      'application/xml' => ['q' => 1, 'version' => '2.0'],
//           'text/plain' => ['q' => 0.5],
// ]
public array getAcceptableContentTypes ( )
return array

依據品質分數排序的內容類型。分數最高的類型將首先傳回。陣列鍵為內容類型,而陣列值為 Header 中給定的相應品質分數和其他參數。

                public function getAcceptableContentTypes()
{
    if ($this->_contentTypes === null) {
        if ($this->headers->get('Accept') !== null) {
            $this->_contentTypes = $this->parseAcceptHeader($this->headers->get('Accept'));
        } else {
            $this->_contentTypes = [];
        }
    }
    return $this->_contentTypes;
}

            
getAcceptableLanguages() public method

傳回終端使用者可接受的語言。

這由 Accept-Language HTTP 標頭決定。

public array getAcceptableLanguages ( )
return array

依據偏好程度排序的語言。第一個元素代表最偏好的語言。

                public function getAcceptableLanguages()
{
    if ($this->_languages === null) {
        if ($this->headers->has('Accept-Language')) {
            $this->_languages = array_keys($this->parseAcceptHeader($this->headers->get('Accept-Language')));
        } else {
            $this->_languages = [];
        }
    }
    return $this->_languages;
}

            
getAuthCredentials() public method (available since version 2.0.13)

另請參閱

public array getAuthCredentials ( )
return array

包含正好兩個元素

  • 0:透過 HTTP 驗證傳送的使用者名稱,如果未提供使用者名稱,則為 null
  • 1:透過 HTTP 驗證傳送的密碼,如果未提供密碼,則為 null

                public function getAuthCredentials()
{
    $username = isset($_SERVER['PHP_AUTH_USER']) ? $_SERVER['PHP_AUTH_USER'] : null;
    $password = isset($_SERVER['PHP_AUTH_PW']) ? $_SERVER['PHP_AUTH_PW'] : null;
    if ($username !== null || $password !== null) {
        return [$username, $password];
    }
    /**
     * Apache with php-cgi does not pass HTTP Basic authentication to PHP by default.
     * To make it work, add one of the following lines to to your .htaccess file:
     *
     * SetEnvIf Authorization .+ HTTP_AUTHORIZATION=$0
     * --OR--
     * RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
     */
    $auth_token = $this->getHeaders()->get('Authorization');
    if ($auth_token !== null && strncasecmp($auth_token, 'basic', 5) === 0) {
        $parts = array_map(function ($value) {
            return strlen($value) === 0 ? null : $value;
        }, explode(':', base64_decode(mb_substr($auth_token, 6)), 2));
        if (count($parts) < 2) {
            return [$parts[0], null];
        }
        return $parts;
    }
    return [null, null];
}

            
getAuthPassword() public method

另請參閱 getAuthCredentials() 以一次取得使用者名稱和密碼。

public string|null getAuthPassword ( )
return string|null

透過 HTTP 驗證傳送的密碼,如果未提供密碼則為 null

                public function getAuthPassword()
{
    return $this->getAuthCredentials()[1];
}

            
getAuthUser() public method

另請參閱 getAuthCredentials() 以一次取得使用者名稱和密碼。

public string|null getAuthUser ( )
return string|null

透過 HTTP 驗證傳送的使用者名稱,如果未提供使用者名稱則為 null

                public function getAuthUser()
{
    return $this->getAuthCredentials()[0];
}

            
getBaseUrl() public method

傳回應用程式的相對 URL。

這與 $scriptUrl 類似,但它不包含腳本檔案名稱,且結尾斜線已被移除。

另請參閱 setScriptUrl()

public string getBaseUrl ( )
return string

應用程式的相對 URL

                public function getBaseUrl()
{
    if ($this->_baseUrl === null) {
        $this->_baseUrl = rtrim(dirname($this->getScriptUrl()), '\\/');
    }
    return $this->_baseUrl;
}

            
getBehavior() public method

定義於: yii\base\Component::getBehavior()

傳回指定的行為物件。

public yii\base\Behavior|null getBehavior ( $name )
$name string

行為名稱

return yii\base\Behavior|null

行為物件,如果行為不存在則為 null

                public function getBehavior($name)
{
    $this->ensureBehaviors();
    return isset($this->_behaviors[$name]) ? $this->_behaviors[$name] : null;
}

            
getBehaviors() public method

定義於: yii\base\Component::getBehaviors()

傳回附加到此組件的所有行為。

public yii\base\Behavior[] getBehaviors ( )
return yii\base\Behavior[]

附加到此元件的行為列表

                public function getBehaviors()
{
    $this->ensureBehaviors();
    return $this->_behaviors;
}

            
getBodyParam() public method

傳回指定的請求 body 參數值。

如果參數不存在,將會傳回傳遞給此方法的第二個參數。

另請參閱

public mixed getBodyParam ( $name, $defaultValue null )
$name string

參數名稱

$defaultValue mixed

如果參數不存在,則為預設參數值。

return mixed

參數值

                public function getBodyParam($name, $defaultValue = null)
{
    $params = $this->getBodyParams();
    if (is_object($params)) {
        // unable to use `ArrayHelper::getValue()` due to different dots in key logic and lack of exception handling
        try {
            return isset($params->{$name}) ? $params->{$name} : $defaultValue;
        } catch (\Exception $e) {
            return $defaultValue;
        }
    }
    return isset($params[$name]) ? $params[$name] : $defaultValue;
}

            
getBodyParams() public method

傳回請求 body 中提供的請求參數。

請求參數是使用 $parsers 屬性中配置的解析器確定的。如果沒有為當前的 $contentType 配置解析器,它會使用 PHP 函數 mb_parse_str() 來解析 請求主體

另請參閱

public array|object getBodyParams ( )
return array|object

請求 body 中提供的請求參數。

throws yii\base\InvalidConfigException

如果已註冊的解析器未實作 yii\web\RequestParserInterface

                public function getBodyParams()
{
    if ($this->_bodyParams === null) {
        if (isset($_POST[$this->methodParam])) {
            $this->_bodyParams = $_POST;
            unset($this->_bodyParams[$this->methodParam]);
            return $this->_bodyParams;
        }
        $rawContentType = $this->getContentType();
        if (($pos = strpos((string)$rawContentType, ';')) !== false) {
            // e.g. text/html; charset=UTF-8
            $contentType = substr($rawContentType, 0, $pos);
        } else {
            $contentType = $rawContentType;
        }
        if (isset($this->parsers[$contentType])) {
            $parser = Yii::createObject($this->parsers[$contentType]);
            if (!($parser instanceof RequestParserInterface)) {
                throw new InvalidConfigException("The '$contentType' request parser is invalid. It must implement the yii\\web\\RequestParserInterface.");
            }
            $this->_bodyParams = $parser->parse($this->getRawBody(), $rawContentType);
        } elseif (isset($this->parsers['*'])) {
            $parser = Yii::createObject($this->parsers['*']);
            if (!($parser instanceof RequestParserInterface)) {
                throw new InvalidConfigException('The fallback request parser is invalid. It must implement the yii\\web\\RequestParserInterface.');
            }
            $this->_bodyParams = $parser->parse($this->getRawBody(), $rawContentType);
        } elseif ($this->getMethod() === 'POST') {
            // PHP has already parsed the body so we have all params in $_POST
            $this->_bodyParams = $_POST;
        } else {
            $this->_bodyParams = [];
            mb_parse_str($this->getRawBody(), $this->_bodyParams);
        }
    }
    return $this->_bodyParams;
}

            
getContentType() public method

傳回請求內容類型。Content-Type Header 欄位指示 getRawBody() 中包含的資料的 MIME 類型,或者在 HEAD 方法的情況下,指示如果請求為 GET 時本應傳送的媒體類型。

對於使用者期望在回應中看到的 MIME 類型,請參閱 $acceptableContentTypes

public string getContentType ( )
return string

請求內容類型。如果此資訊不可用,則傳回空字串。

                public function getContentType()
{
    if (isset($_SERVER['CONTENT_TYPE'])) {
        return $_SERVER['CONTENT_TYPE'];
    }
    //fix bug https://bugs.php.net/bug.php?id=66606
    return $this->headers->get('Content-Type') ?: '';
}

            
getCookies() public method

傳回 Cookie 集合。

透過傳回的 cookie 集合,您可以使用以下語法存取 cookie

$cookie = $request->cookies['name']
if ($cookie !== null) {
    $value = $cookie->value;
}

// alternatively
$value = $request->cookies->getValue('name');
public yii\web\CookieCollection getCookies ( )
return yii\web\CookieCollection

Cookie 集合。

                public function getCookies()
{
    if ($this->_cookies === null) {
        $this->_cookies = new CookieCollection($this->loadCookies(), [
            'readOnly' => true,
        ]);
    }
    return $this->_cookies;
}

            
getCsrfToken() public method

傳回用於執行 CSRF 驗證的令牌。

此權杖的產生方式旨在防止 BREACH 攻擊。它可以透過 HTML 表單的隱藏欄位或 HTTP 標頭值傳遞,以支援 CSRF 驗證。

public string getCsrfToken ( $regenerate false )
$regenerate boolean

是否重新產生 CSRF 權杖。當此參數為 true 時,每次呼叫此方法都會產生並持久化(在 session 或 cookie 中)一個新的 CSRF 權杖。

return string

用於執行 CSRF 驗證的令牌。

                public function getCsrfToken($regenerate = false)
{
    if ($this->_csrfToken === null || $regenerate) {
        $token = $this->loadCsrfToken();
        if ($regenerate || empty($token)) {
            $token = $this->generateCsrfToken();
        }
        $this->_csrfToken = Yii::$app->security->maskToken($token);
    }
    return $this->_csrfToken;
}

            
getCsrfTokenFromHeader() public method

public string|null getCsrfTokenFromHeader ( )
return string|null

瀏覽器透過 CSRF_HEADER 傳送的 CSRF 令牌。如果未傳送此 Header,則傳回 Null。

                public function getCsrfTokenFromHeader()
{
    return $this->headers->get(static::CSRF_HEADER);
}

            
getETags() public method

取得 Etags。

public array getETags ( )
return array

實體標籤

                public function getETags()
{
    if ($this->headers->has('If-None-Match')) {
        return preg_split('/[\s,]+/', str_replace('-gzip', '', $this->headers->get('If-None-Match')), -1, PREG_SPLIT_NO_EMPTY);
    }
    return [];
}

            
getHeaders() public method

傳回 Header 集合。

標頭集合包含傳入的 HTTP 標頭。

public yii\web\HeaderCollection getHeaders ( )
return yii\web\HeaderCollection

標頭集合

                public function getHeaders()
{
    if ($this->_headers === null) {
        $this->_headers = new HeaderCollection();
        if (function_exists('getallheaders')) {
            $headers = getallheaders();
            foreach ($headers as $name => $value) {
                $this->_headers->add($name, $value);
            }
        } elseif (function_exists('http_get_request_headers')) {
            $headers = http_get_request_headers();
            foreach ($headers as $name => $value) {
                $this->_headers->add($name, $value);
            }
        } else {
            // ['prefix' => length]
            $headerPrefixes = ['HTTP_' => 5, 'REDIRECT_HTTP_' => 14];
            foreach ($_SERVER as $name => $value) {
                foreach ($headerPrefixes as $prefix => $length) {
                    if (strncmp($name, $prefix, $length) === 0) {
                        $name = str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', substr($name, $length)))));
                        $this->_headers->add($name, $value);
                        continue 2;
                    }
                }
            }
        }
        $this->filterHeaders($this->_headers);
    }
    return $this->_headers;
}

            
getHostInfo() public method

傳回當前請求 URL 的 Schema 和主機部分。

傳回的 URL 沒有結尾斜線。

預設情況下,此值基於使用者請求資訊。如果 $_SERVER['HTTP_HOST'] 可用,此方法將傳回其值,否則傳回 $_SERVER['SERVER_NAME']。您可能需要查看 PHP 文件 以取得有關這些變數的更多資訊。

您可以透過設定 hostInfo 屬性來明確指定它。

警告: 依賴伺服器配置,此資訊可能不可靠,並且可能被 傳送 HTTP 請求的使用者偽造。如果 Web 伺服器配置為提供相同的站點,而與 Host 標頭的值無關,則此值不可靠。在這種情況下,您應該修復 Web 伺服器配置,或透過設定 hostInfo 屬性來明確設定該值。如果您無法存取伺服器配置,您可以在應用程式層級設定 yii\filters\HostControl 過濾器,以防止此類攻擊。

另請參閱 setHostInfo()

public string|null getHostInfo ( )
return string|null

請求 URL 的 Schema 和主機名稱部分(如果需要,包含端口號)(例如 https://yii.dev.org.tw),如果無法從 $_SERVER 取得且未設定,則為 null。

                public function getHostInfo()
{
    if ($this->_hostInfo === null) {
        $secure = $this->getIsSecureConnection();
        $http = $secure ? 'https' : 'http';
        if ($this->getSecureForwardedHeaderTrustedPart('host') !== null) {
            $this->_hostInfo = $http . '://' . $this->getSecureForwardedHeaderTrustedPart('host');
        } elseif ($this->headers->has('X-Forwarded-Host')) {
            $this->_hostInfo = $http . '://' . trim(explode(',', $this->headers->get('X-Forwarded-Host'))[0]);
        } elseif ($this->headers->has('X-Original-Host')) {
            $this->_hostInfo = $http . '://' . trim(explode(',', $this->headers->get('X-Original-Host'))[0]);
        } elseif ($this->headers->has('Host')) {
            $this->_hostInfo = $http . '://' . $this->headers->get('Host');
        } elseif (isset($_SERVER['SERVER_NAME'])) {
            $this->_hostInfo = $http . '://' . $_SERVER['SERVER_NAME'];
            $port = $secure ? $this->getSecurePort() : $this->getPort();
            if (($port !== 80 && !$secure) || ($port !== 443 && $secure)) {
                $this->_hostInfo .= ':' . $port;
            }
        }
    }
    return $this->_hostInfo;
}

            
getHostName() public method (自版本 2.0.10 起可用)

傳回當前請求 URL 的主機部分。

值是從當前的 hostInfo 屬性計算而來。

警告: 此值的內容可能不可靠,具體取決於伺服器配置。請參閱 getHostInfo() 以取得更多資訊。

另請參閱 getHostInfo()

public string|null getHostName ( )
return string|null

請求 URL 的主機名稱部分(例如 www.yiiframework.com

                public function getHostName()
{
    if ($this->_hostName === null) {
        $this->_hostName = parse_url((string)$this->getHostInfo(), PHP_URL_HOST);
    }
    return $this->_hostName;
}

            
getIpValidator() protected method (自版本 2.0.13 起可用)

建立 yii\validators\IpValidator 的實例。

您可以覆寫此方法來調整驗證器或實作不同的比對策略。

protected yii\validators\IpValidator getIpValidator ( )

                protected function getIpValidator()
{
    return new IpValidator();
}

            
getIsAjax() public method

傳回這是否為 AJAX (XMLHttpRequest) 請求。

請注意,在跨網域請求的情況下,瀏覽器預設不會設定 X-Requested-With 標頭:https://stackoverflow.com/questions/8163703/cross-domain-ajax-doesnt-send-x-requested-with-header

如果您正在使用 fetch(),請手動傳遞標頭

fetch(url, {
   method: 'GET',
   headers: {'X-Requested-With': 'XMLHttpRequest'}
})
public boolean getIsAjax ( )
return boolean

這是否為 AJAX (XMLHttpRequest) 請求。

                public function getIsAjax()
{
    return $this->headers->get('X-Requested-With') === 'XMLHttpRequest';
}

            
getIsConsoleRequest() public method

定義於: yii\base\Request::getIsConsoleRequest()

傳回一個值,指示當前請求是否透過命令列發出。

public boolean getIsConsoleRequest ( )
return boolean

指示當前請求是否透過主控台發出的值

                public function getIsConsoleRequest()
{
    return $this->_isConsoleRequest !== null ? $this->_isConsoleRequest : PHP_SAPI === 'cli';
}

            
getIsDelete() public method

傳回這是否為 DELETE 請求。

public boolean getIsDelete ( )
return boolean

這是否為 DELETE 請求。

                public function getIsDelete()
{
    return $this->getMethod() === 'DELETE';
}

            
getIsFlash() public method

傳回這是否為 Adobe Flash 或 Flex 請求。

public boolean getIsFlash ( )
return boolean

這是否為 Adobe Flash 或 Adobe Flex 請求。

                public function getIsFlash()
{
    $userAgent = $this->headers->get('User-Agent', '');
    return stripos($userAgent, 'Shockwave') !== false
        || stripos($userAgent, 'Flash') !== false;
}

            
getIsGet() public method

傳回這是否為 GET 請求。

public boolean getIsGet ( )
return boolean

這是否為 GET 請求。

                public function getIsGet()
{
    return $this->getMethod() === 'GET';
}

            
getIsHead() public method

傳回這是否為 HEAD 請求。

public boolean getIsHead ( )
return boolean

這是否為 HEAD 請求。

                public function getIsHead()
{
    return $this->getMethod() === 'HEAD';
}

            
getIsOptions() public method

傳回這是否為 OPTIONS 請求。

public boolean getIsOptions ( )
return boolean

這是否為 OPTIONS 請求。

                public function getIsOptions()
{
    return $this->getMethod() === 'OPTIONS';
}

            
getIsPatch() public method

傳回這是否為 PATCH 請求。

public boolean getIsPatch ( )
return boolean

這是否為 PATCH 請求。

                public function getIsPatch()
{
    return $this->getMethod() === 'PATCH';
}

            
getIsPjax() public method

傳回這是否為 PJAX 請求。

public boolean getIsPjax ( )
return boolean

是否為 PJAX 請求

                public function getIsPjax()
{
    return $this->getIsAjax() && $this->headers->has('X-Pjax');
}

            
getIsPost() public method

傳回這是否為 POST 請求。

public boolean getIsPost ( )
return boolean

這是否為 POST 請求。

                public function getIsPost()
{
    return $this->getMethod() === 'POST';
}

            
getIsPut() public method

傳回這是否為 PUT 請求。

public boolean getIsPut ( )
return boolean

這是否為 PUT 請求。

                public function getIsPut()
{
    return $this->getMethod() === 'PUT';
}

            
getIsSecureConnection() public method

傳回請求是否透過安全通道 (https) 傳送。

public boolean getIsSecureConnection ( )
return boolean

如果請求是透過安全通道 (https) 發送的

                public function getIsSecureConnection()
{
    if (isset($_SERVER['HTTPS']) && (strcasecmp($_SERVER['HTTPS'], 'on') === 0 || $_SERVER['HTTPS'] == 1)) {
        return true;
    }
    if (($proto = $this->getSecureForwardedHeaderTrustedPart('proto')) !== null) {
        return strcasecmp($proto, 'https') === 0;
    }
    foreach ($this->secureProtocolHeaders as $header => $values) {
        if (($headerValue = $this->headers->get($header, null)) !== null) {
            foreach ($values as $value) {
                if (strcasecmp($headerValue, $value) === 0) {
                    return true;
                }
            }
        }
    }
    return false;
}

            
getMethod() public method

傳回當前請求的方法(例如 GET、POST、HEAD、PUT、PATCH、DELETE)。

public string getMethod ( )
return string

請求方法,例如 GET、POST、HEAD、PUT、PATCH、DELETE。傳回的值會轉換為大寫。

                public function getMethod()
{
    if (
        isset($_POST[$this->methodParam])
        // Never allow to downgrade request from WRITE methods (POST, PATCH, DELETE, etc)
        // to read methods (GET, HEAD, OPTIONS) for security reasons.
        && !in_array(strtoupper($_POST[$this->methodParam]), ['GET', 'HEAD', 'OPTIONS'], true)
    ) {
        return strtoupper($_POST[$this->methodParam]);
    }
    if ($this->headers->has('X-Http-Method-Override')) {
        return strtoupper($this->headers->get('X-Http-Method-Override'));
    }
    if (isset($_SERVER['REQUEST_METHOD'])) {
        return strtoupper($_SERVER['REQUEST_METHOD']);
    }
    return 'GET';
}

            
getOrigin() public method (自版本 2.0.13 起可用)

傳回 CORS 請求的 URL Origin。

傳回值取自瀏覽器傳送的 Origin 標頭

請注意,來源請求標頭指示提取的來源位置。它不包含任何路徑資訊,僅包含伺服器名稱。它與 CORS 請求以及 POST 請求一起發送。它類似於 referrer 標頭,但與此標頭不同,它不會洩露整個路徑。請參閱 https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Origin 以取得更多資訊。

另請參閱 getHeaders()

public string|null getOrigin ( )
return string|null

CORS 請求的 URL Origin,如果不可用則為 null

                public function getOrigin()
{
    return $this->getHeaders()->get('origin');
}

            
getPathInfo() public method

傳回目前請求 URL 的路徑資訊。

路徑資訊是指在入口腳本之後和問號(查詢字串)之前的部分。開頭和結尾的斜線都已移除。

public string getPathInfo ( )
return string

請求 URL 中在入口腳本之後和問號之前的部分。請注意,傳回的路徑資訊已經過 URL 解碼。

throws yii\base\InvalidConfigException

如果由於意外的伺服器配置而無法確定路徑資訊

                public function getPathInfo()
{
    if ($this->_pathInfo === null) {
        $this->_pathInfo = $this->resolvePathInfo();
    }
    return $this->_pathInfo;
}

            
getPort() public method

傳回用於不安全請求的端口。

預設為 80,如果當前請求不安全,則為伺服器指定的埠。

另請參閱 setPort()

public integer getPort ( )
return integer

不安全請求的端口號。

                public function getPort()
{
    if ($this->_port === null) {
        $serverPort = $this->getServerPort();
        $this->_port = !$this->getIsSecureConnection() && $serverPort !== null ? $serverPort : 80;
    }
    return $this->_port;
}

            
getPreferredLanguage() public method

傳回此應用程式應使用的使用者偏好語言。

語言解析基於使用者偏好的語言和應用程式支援的語言。此方法將嘗試找到最佳匹配。

public string getPreferredLanguage ( array $languages = [] )
$languages array

應用程式支援的語言列表。如果為空,將傳回當前應用程式語言,而無需進一步處理。

return string

應用程式應使用的語言。

                public function getPreferredLanguage(array $languages = [])
{
    if (empty($languages)) {
        return Yii::$app->language;
    }
    foreach ($this->getAcceptableLanguages() as $acceptableLanguage) {
        $acceptableLanguage = str_replace('_', '-', strtolower($acceptableLanguage));
        foreach ($languages as $language) {
            $normalizedLanguage = str_replace('_', '-', strtolower($language));
            if (
                $normalizedLanguage === $acceptableLanguage // en-us==en-us
                || strpos($acceptableLanguage, $normalizedLanguage . '-') === 0 // en==en-us
                || strpos($normalizedLanguage, $acceptableLanguage . '-') === 0 // en-us==en
            ) {
                return $language;
            }
        }
    }
    return reset($languages);
}

            
getQueryParam() public method

傳回指定的 GET 參數值。

如果 GET 參數不存在,將會傳回傳遞給此方法的第二個參數。

另請參閱 getBodyParam()

public mixed getQueryParam ( $name, $defaultValue null )
$name string

GET 參數名稱。

$defaultValue mixed

如果 GET 參數不存在,則為預設參數值。

return mixed

GET 參數值

                public function getQueryParam($name, $defaultValue = null)
{
    $params = $this->getQueryParams();
    return isset($params[$name]) ? $params[$name] : $defaultValue;
}

            
getQueryParams() public method

傳回在 $queryString 中提供的請求參數。

如果未明確設定參數,此方法將傳回 $_GET 的內容。

另請參閱 setQueryParams()

public array getQueryParams ( )
return array

請求 GET 參數值。

                public function getQueryParams()
{
    if ($this->_queryParams === null) {
        return $_GET;
    }
    return $this->_queryParams;
}

            
getQueryString() public method

傳回請求 URL 中,在問號之後的部分。

public string getQueryString ( )
return string

請求 URL 中問號後面的部分

                public function getQueryString()
{
    return isset($_SERVER['QUERY_STRING']) ? $_SERVER['QUERY_STRING'] : '';
}

            
getRawBody() public method

傳回原始 HTTP 請求 body。

public string getRawBody ( )
return string

請求主體

                public function getRawBody()
{
    if ($this->_rawBody === null) {
        $this->_rawBody = file_get_contents('php://input');
    }
    return $this->_rawBody;
}

            
getReferrer() public method

傳回 URL Referrer。

public string|null getReferrer ( )
return string|null

URL 參照頁,如果不可用則為 null

                public function getReferrer()
{
    return $this->headers->get('Referer');
}

            
getRemoteHost() public method (自版本 2.0.13 起可用)

傳回此連線另一端的主機名稱。

這始終是下一個躍點,任何標頭都會被忽略。

另請參閱

public string|null getRemoteHost ( )
return string|null

遠端主機名稱,如果不可用則為 null

                public function getRemoteHost()
{
    return isset($_SERVER['REMOTE_HOST']) ? $_SERVER['REMOTE_HOST'] : null;
}

            
getRemoteIP() public method (自版本 2.0.13 起可用)

傳回此連線另一端的 IP。

這始終是下一個躍點,任何標頭都會被忽略。

public string|null getRemoteIP ( )
return string|null

遠端 IP 位址,如果不可用則為 null

                public function getRemoteIP()
{
    return isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : null;
}

            
getScriptFile() public method

傳回入口腳本檔案路徑。

預設實作會直接回傳 $_SERVER['SCRIPT_FILENAME']

public string getScriptFile ( )
return string

入口腳本檔案路徑

throws yii\base\InvalidConfigException

                public function getScriptFile()
{
    if (isset($this->_scriptFile)) {
        return $this->_scriptFile;
    }
    if (isset($_SERVER['SCRIPT_FILENAME'])) {
        return $_SERVER['SCRIPT_FILENAME'];
    }
    throw new InvalidConfigException('Unable to determine the entry script file path.');
}

            
getScriptUrl() public method

傳回入口腳本的相對 URL。

此方法的實作參考了 Zend Framework 中的 Zend_Controller_Request_Http。

public string getScriptUrl ( )
return string

入口腳本的相對 URL。

throws yii\base\InvalidConfigException

如果無法判斷入口腳本 URL

                public function getScriptUrl()
{
    if ($this->_scriptUrl === null) {
        $scriptFile = $this->getScriptFile();
        $scriptName = basename($scriptFile);
        if (isset($_SERVER['SCRIPT_NAME']) && basename($_SERVER['SCRIPT_NAME']) === $scriptName) {
            $this->_scriptUrl = $_SERVER['SCRIPT_NAME'];
        } elseif (isset($_SERVER['PHP_SELF']) && basename($_SERVER['PHP_SELF']) === $scriptName) {
            $this->_scriptUrl = $_SERVER['PHP_SELF'];
        } elseif (isset($_SERVER['ORIG_SCRIPT_NAME']) && basename($_SERVER['ORIG_SCRIPT_NAME']) === $scriptName) {
            $this->_scriptUrl = $_SERVER['ORIG_SCRIPT_NAME'];
        } elseif (isset($_SERVER['PHP_SELF']) && ($pos = strpos($_SERVER['PHP_SELF'], '/' . $scriptName)) !== false) {
            $this->_scriptUrl = substr($_SERVER['SCRIPT_NAME'], 0, $pos) . '/' . $scriptName;
        } elseif (!empty($_SERVER['DOCUMENT_ROOT']) && strpos($scriptFile, $_SERVER['DOCUMENT_ROOT']) === 0) {
            $this->_scriptUrl = str_replace([$_SERVER['DOCUMENT_ROOT'], '\\'], ['', '/'], $scriptFile);
        } else {
            throw new InvalidConfigException('Unable to determine the entry script URL.');
        }
    }
    return $this->_scriptUrl;
}

            
getSecureForwardedHeaderParts() protected method (available since version 2.0.31)

傳回已解碼的轉發 Header

protected array getSecureForwardedHeaderParts ( )

                protected function getSecureForwardedHeaderParts()
{
    if ($this->_secureForwardedHeaderParts !== null) {
        return $this->_secureForwardedHeaderParts;
    }
    if (count(preg_grep('/^forwarded$/i', $this->secureHeaders)) === 0) {
        return $this->_secureForwardedHeaderParts = [];
    }
    /*
     * First header is always correct, because proxy CAN add headers
     * after last one is found.
     * Keep in mind that it is NOT enforced, therefore we cannot be
     * sure, that this is really a first one.
     *
     * FPM keeps last header sent which is a bug. You need to merge
     * headers together on your web server before letting FPM handle it
     * @see https://bugs.php.net/bug.php?id=78844
     */
    $forwarded = $this->headers->get('Forwarded', '');
    if ($forwarded === '') {
        return $this->_secureForwardedHeaderParts = [];
    }
    preg_match_all('/(?:[^",]++|"[^"]++")+/', $forwarded, $forwardedElements);
    foreach ($forwardedElements[0] as $forwardedPairs) {
        preg_match_all('/(?P<key>\w+)\s*=\s*(?:(?P<value>[^",;]*[^",;\s])|"(?P<value2>[^"]+)")/', $forwardedPairs, $matches, PREG_SET_ORDER);
        $this->_secureForwardedHeaderParts[] = array_reduce($matches, function ($carry, $item) {
            $value = $item['value'];
            if (isset($item['value2']) && $item['value2'] !== '') {
                $value = $item['value2'];
            }
            $carry[strtolower($item['key'])] = $value;
            return $carry;
        }, []);
    }
    return $this->_secureForwardedHeaderParts;
}

            
getSecureForwardedHeaderTrustedPart() protected method (available since version 2.0.31)

取得令牌的第一個 Forwarded Header 值

protected string|null getSecureForwardedHeaderTrustedPart ( $token )
$token string

Header 令牌

                protected function getSecureForwardedHeaderTrustedPart($token)
{
    $token = strtolower($token);
    if ($parts = $this->getSecureForwardedHeaderTrustedParts()) {
        $lastElement = array_pop($parts);
        if ($lastElement && isset($lastElement[$token])) {
            return $lastElement[$token];
        }
    }
    return null;
}

            
getSecureForwardedHeaderTrustedParts() protected method (available since version 2.0.31)

僅取得受信任的 Forwarded Header 部分

protected array getSecureForwardedHeaderTrustedParts ( )

                protected function getSecureForwardedHeaderTrustedParts()
{
    if ($this->_secureForwardedHeaderTrustedParts !== null) {
        return $this->_secureForwardedHeaderTrustedParts;
    }
    $validator = $this->getIpValidator();
    $trustedHosts = [];
    foreach ($this->trustedHosts as $trustedCidr => $trustedCidrOrHeaders) {
        if (!is_array($trustedCidrOrHeaders)) {
            $trustedCidr = $trustedCidrOrHeaders;
        }
        $trustedHosts[] = $trustedCidr;
    }
    $validator->setRanges($trustedHosts);
    $this->_secureForwardedHeaderTrustedParts = array_filter(
        $this->getSecureForwardedHeaderParts(),
        function ($headerPart) use ($validator) {
            return isset($headerPart['for']) ? !$validator->validate($headerPart['for']) : true;
        }
    );
    return $this->_secureForwardedHeaderTrustedParts;
}

            
getSecurePort() public method

傳回用於安全請求的端口。

預設為 443,或者如果當前請求是安全的,則為伺服器指定的連接埠。

另請參閱 setSecurePort()

public integer getSecurePort ( )
return integer

安全請求的端口號。

                public function getSecurePort()
{
    if ($this->_securePort === null) {
        $serverPort = $this->getServerPort();
        $this->_securePort = $this->getIsSecureConnection() && $serverPort !== null ? $serverPort : 443;
    }
    return $this->_securePort;
}

            
getServerName() public method

傳回伺服器名稱。

public string|null getServerName ( )
return string|null

伺服器名稱,如果不可用則為 null

                public function getServerName()
{
    return isset($_SERVER['SERVER_NAME']) ? $_SERVER['SERVER_NAME'] : null;
}

            
getServerPort() public method

傳回伺服器端口號。如果透過轉發 Header(例如 'X-Forwarded-Port')指定了端口,且遠端主機是「受信任主機」,則將使用該端口(請參閱 $portHeaders),否則將傳回預設伺服器端口。

另請參閱 $portHeaders

public integer|null getServerPort ( )
return integer|null

伺服器連接埠號碼,如果不可用則為 null

                public function getServerPort()
{
    foreach ($this->portHeaders as $portHeader) {
        if ($this->headers->has($portHeader)) {
            $port = $this->headers->get($portHeader);
            if ($port !== null) {
                return $port;
            }
        }
    }
    return isset($_SERVER['SERVER_PORT']) ? (int) $_SERVER['SERVER_PORT'] : null;
}

            
getTrustedHeaders() protected method (available since version 2.0.28)

根據 $trustedHosts 的受信任 Header。

protected array getTrustedHeaders ( )

                protected function getTrustedHeaders()
{
    // do not trust any of the [[secureHeaders]] by default
    $trustedHeaders = [];
    // check if the client is a trusted host
    if (!empty($this->trustedHosts)) {
        $validator = $this->getIpValidator();
        $ip = $this->getRemoteIP();
        foreach ($this->trustedHosts as $cidr => $headers) {
            if (!is_array($headers)) {
                $cidr = $headers;
                $headers = $this->secureHeaders;
            }
            $validator->setRanges($cidr);
            if ($validator->validate($ip)) {
                $trustedHeaders = $headers;
                break;
            }
        }
    }
    return $trustedHeaders;
}

            
getUrl() public method

傳回目前請求的相對 URL。

這指的是 URL 中在 $hostInfo 部分之後的部分。它包含 $queryString 部分(如果有的話)。

public string getUrl ( )
return string

目前請求的相對 URL。請注意,返回的 URI 可能會根據客戶端進行 URL 編碼。

throws yii\base\InvalidConfigException

如果由於不尋常的伺服器配置而無法判斷 URL

                public function getUrl()
{
    if ($this->_url === null) {
        $this->_url = $this->resolveRequestUri();
    }
    return $this->_url;
}

            
getUserAgent() public method

傳回 User Agent。

public string|null getUserAgent ( )
return string|null

使用者代理,如果不可用則為 null

                public function getUserAgent()
{
    return $this->headers->get('User-Agent');
}

            
getUserHost() public method

傳回使用者主機名稱。

HOST 是使用 headers 和/或 $_SERVER 變數判斷的。

public string|null getUserHost ( )
return string|null

使用者主機名稱,如果不可用則為 null

                public function getUserHost()
{
    $userIp = $this->getUserIpFromIpHeaders();
    if ($userIp === null) {
        return $this->getRemoteHost();
    }
    return gethostbyaddr($userIp);
}

            
getUserIP() public method

傳回使用者 IP 位址。

IP 是使用 headers 和/或 $_SERVER 變數判斷的。

public string|null getUserIP ( )
return string|null

使用者 IP 位址,如果不可用則為 null

                public function getUserIP()
{
    if ($this->_ip === null) {
        $this->_ip = $this->getUserIpFromIpHeaders();
        if ($this->_ip === null) {
            $this->_ip = $this->getRemoteIP();
        }
    }
    return $this->_ip;
}

            
getUserIpFromIpHeader() protected method (available since version 2.0.28)

從 IP Header 傳回使用者 IP。

另請參閱

protected string|null getUserIpFromIpHeader ( $ips )
$ips string

逗號分隔的 IP 清單

return string|null

字串格式的 IP。如果無法從 header 判斷 IP,則回傳 Null。

                protected function getUserIpFromIpHeader($ips)
{
    $ips = trim($ips);
    if ($ips === '') {
        return null;
    }
    $ips = preg_split('/\s*,\s*/', $ips, -1, PREG_SPLIT_NO_EMPTY);
    krsort($ips);
    $validator = $this->getIpValidator();
    $resultIp = null;
    foreach ($ips as $ip) {
        $validator->setRanges('any');
        if (!$validator->validate($ip) /* checking IP format */) {
            break;
        }
        $resultIp = $ip;
        $isTrusted = false;
        foreach ($this->trustedHosts as $trustedCidr => $trustedCidrOrHeaders) {
            if (!is_array($trustedCidrOrHeaders)) {
                $trustedCidr = $trustedCidrOrHeaders;
            }
            $validator->setRanges($trustedCidr);
            if ($validator->validate($ip) /* checking trusted range */) {
                $isTrusted = true;
                break;
            }
        }
        if (!$isTrusted) {
            break;
        }
    }
    return $resultIp;
}

            
getUserIpFromIpHeaders() protected method (available since version 2.0.28)

$ipHeaders 傳回使用者 IP 位址。

另請參閱 $ipHeaders

protected string|null getUserIpFromIpHeaders ( )
return string|null

使用者 IP 位址,如果不可用則為 null

                protected function getUserIpFromIpHeaders()
{
    $ip = $this->getSecureForwardedHeaderTrustedPart('for');
    if (
        $ip !== null && preg_match(
            '/^\[?(?P<ip>(?:(?:(?:[0-9a-f]{1,4}:){1,6}(?:[0-9a-f]{1,4})?(?:(?::[0-9a-f]{1,4}){1,6}))|(?:\d{1,3}\.){3}\d{1,3}))\]?(?::(?P<port>\d+))?$/',
            $ip,
            $matches
        )
    ) {
        $ip = $this->getUserIpFromIpHeader($matches['ip']);
        if ($ip !== null) {
            return $ip;
        }
    }
    foreach ($this->ipHeaders as $ipHeader) {
        if ($this->headers->has($ipHeader)) {
            $ip = $this->getUserIpFromIpHeader($this->headers->get($ipHeader));
            if ($ip !== null) {
                return $ip;
            }
        }
    }
    return null;
}

            
hasEventHandlers() public method

定義於: yii\base\Component::hasEventHandlers()

傳回一個值,指示是否有名為事件附加任何處理程序。

public boolean hasEventHandlers ( $name )
$name string

事件名稱

return boolean

判斷是否有任何處理器附加到事件。

                public function hasEventHandlers($name)
{
    $this->ensureBehaviors();
    if (!empty($this->_events[$name])) {
        return true;
    }
    foreach ($this->_eventWildcards as $wildcard => $handlers) {
        if (!empty($handlers) && StringHelper::matchWildcard($wildcard, $name)) {
            return true;
        }
    }
    return Event::hasHandlers($this, $name);
}

            
hasMethod() public method

定義於: yii\base\Component::hasMethod()

傳回一個值,指示是否已定義方法。

如果滿足以下條件,則定義方法:

  • 類別具有指定名稱的方法
  • 附加的行為具有給定名稱的方法(當 $checkBehaviors 為 true 時)。
public boolean hasMethod ( $name, $checkBehaviors true )
$name string

屬性名稱

$checkBehaviors boolean

是否將行為的方法視為此元件的方法

return boolean

判斷是否已定義方法

                public function hasMethod($name, $checkBehaviors = true)
{
    if (method_exists($this, $name)) {
        return true;
    } elseif ($checkBehaviors) {
        $this->ensureBehaviors();
        foreach ($this->_behaviors as $behavior) {
            if ($behavior->hasMethod($name)) {
                return true;
            }
        }
    }
    return false;
}

            
hasProperty() public method

定義於: yii\base\Component::hasProperty()

傳回一個值,指示是否為此組件定義了屬性。

如果滿足以下條件,則定義屬性:

  • 類別具有與指定名稱關聯的 getter 或 setter 方法(在這種情況下,屬性名稱不區分大小寫);
  • 類別具有具有指定名稱的成員變數(當 $checkVars 為 true 時);
  • 附加的行為具有給定名稱的屬性(當 $checkBehaviors 為 true 時)。

另請參閱

public boolean hasProperty ( $name, $checkVars true, $checkBehaviors true )
$name string

屬性名稱

$checkVars boolean

是否將成員變數視為屬性

$checkBehaviors boolean

是否將行為的屬性視為此元件的屬性

return boolean

判斷是否已定義屬性

                public function hasProperty($name, $checkVars = true, $checkBehaviors = true)
{
    return $this->canGetProperty($name, $checkVars, $checkBehaviors) || $this->canSetProperty($name, false, $checkBehaviors);
}

            
init() public method

定義於: yii\base\BaseObject::init()

初始化物件。

在物件使用給定配置初始化後,此方法會在建構函式的結尾被調用。

public void init ( )

                public function init()
{
}

            
loadCookies() protected method

$_COOKIE 轉換為 yii\web\Cookie 的陣列。

protected array loadCookies ( )
return array

從請求中取得的 cookies

throws yii\base\InvalidConfigException

如果當 $enableCookieValidation 為 true 時,$cookieValidationKey 未設定

                protected function loadCookies()
{
    $cookies = [];
    if ($this->enableCookieValidation) {
        if ($this->cookieValidationKey == '') {
            throw new InvalidConfigException(get_class($this) . '::cookieValidationKey must be configured with a secret key.');
        }
        foreach ($_COOKIE as $name => $value) {
            if (!is_string($value)) {
                continue;
            }
            $data = Yii::$app->getSecurity()->validateData($value, $this->cookieValidationKey);
            if ($data === false) {
                continue;
            }
            if (defined('PHP_VERSION_ID') && PHP_VERSION_ID >= 70000) {
                $data = @unserialize($data, ['allowed_classes' => false]);
            } else {
                $data = @unserialize($data);
            }
            if (is_array($data) && isset($data[0], $data[1]) && $data[0] === $name) {
                $cookies[$name] = Yii::createObject([
                    'class' => 'yii\web\Cookie',
                    'name' => $name,
                    'value' => $data[1],
                    'expire' => null,
                ]);
            }
        }
    } else {
        foreach ($_COOKIE as $name => $value) {
            $cookies[$name] = Yii::createObject([
                'class' => 'yii\web\Cookie',
                'name' => $name,
                'value' => $value,
                'expire' => null,
            ]);
        }
    }
    return $cookies;
}

            
loadCsrfToken() protected method

從 Cookie 或 Session 載入 CSRF 令牌。

protected string|null loadCsrfToken ( )
return string|null

從 cookie 或 session 載入的 CSRF 令牌。如果 cookie 或 session 沒有 CSRF 令牌,則回傳 Null。

                protected function loadCsrfToken()
{
    if ($this->enableCsrfCookie) {
        return $this->getCookies()->getValue($this->csrfParam);
    }
    return Yii::$app->getSession()->get($this->csrfParam);
}

            
off() public method

定義於: yii\base\Component::off()

從此組件分離現有的事件處理程序。

此方法與 on() 相反。

注意:如果為事件名稱傳遞了萬用字元模式,則只會移除使用此萬用字元註冊的處理器,而使用符合此萬用字元的純名稱註冊的處理器將會保留。

另請參閱 on()

public boolean off ( $name, $handler null )
$name string

事件名稱

$handler callable|null

要移除的事件處理器。如果為 null,則會移除附加到指定名稱事件的所有處理器。

return boolean

如果找到並分離處理器

                public function off($name, $handler = null)
{
    $this->ensureBehaviors();
    if (empty($this->_events[$name]) && empty($this->_eventWildcards[$name])) {
        return false;
    }
    if ($handler === null) {
        unset($this->_events[$name], $this->_eventWildcards[$name]);
        return true;
    }
    $removed = false;
    // plain event names
    if (isset($this->_events[$name])) {
        foreach ($this->_events[$name] as $i => $event) {
            if ($event[0] === $handler) {
                unset($this->_events[$name][$i]);
                $removed = true;
            }
        }
        if ($removed) {
            $this->_events[$name] = array_values($this->_events[$name]);
            return true;
        }
    }
    // wildcard event names
    if (isset($this->_eventWildcards[$name])) {
        foreach ($this->_eventWildcards[$name] as $i => $event) {
            if ($event[0] === $handler) {
                unset($this->_eventWildcards[$name][$i]);
                $removed = true;
            }
        }
        if ($removed) {
            $this->_eventWildcards[$name] = array_values($this->_eventWildcards[$name]);
            // remove empty wildcards to save future redundant regex checks:
            if (empty($this->_eventWildcards[$name])) {
                unset($this->_eventWildcards[$name]);
            }
        }
    }
    return $removed;
}

            
on() public method

定義於: yii\base\Component::on()

將事件處理程序附加到事件。

事件處理器必須是有效的 PHP 回呼。以下是一些範例

function ($event) { ... }         // anonymous function
[$object, 'handleClick']          // $object->handleClick()
['Page', 'handleClick']           // Page::handleClick()
'handleClick'                     // global function handleClick()

事件處理器必須使用以下簽名定義:

function ($event)

其中 $event 是一個 yii\base\Event 物件,其中包含與事件關聯的參數。

自 2.0.14 版本起,您可以將事件名稱指定為萬用字元模式

$component->on('event.group.*', function ($event) {
    Yii::trace($event->name . ' is triggered.');
});

另請參閱 off()

public void on ( $name, $handler, $data null, $append true )
$name string

事件名稱

$handler 可呼叫 (callable)

事件處理器

$data mixed

事件觸發時要傳遞給事件處理器的資料。當調用事件處理器時,可以透過 yii\base\Event::$data 存取此資料。

$append boolean

是否將新的事件處理器附加到現有處理器列表的末尾。如果為 false,則新的處理器將插入到現有處理器列表的開頭。

                public function on($name, $handler, $data = null, $append = true)
{
    $this->ensureBehaviors();
    if (strpos($name, '*') !== false) {
        if ($append || empty($this->_eventWildcards[$name])) {
            $this->_eventWildcards[$name][] = [$handler, $data];
        } else {
            array_unshift($this->_eventWildcards[$name], [$handler, $data]);
        }
        return;
    }
    if ($append || empty($this->_events[$name])) {
        $this->_events[$name][] = [$handler, $data];
    } else {
        array_unshift($this->_events[$name], [$handler, $data]);
    }
}

            
parseAcceptHeader() public method

解析給定的 Accept(或 Accept-Language)Header。

此方法將傳回可接受的值,以及它們的品質分數和給定的 Accept header 中指定的對應參數。傳回值的陣列鍵是可接受的值,而陣列值包含對應的品質分數和參數。品質分數最高的可接受值將首先傳回。例如:

$header = 'text/plain; q=0.5, application/json; version=1.0, application/xml; version=2.0;';
$accepts = $request->parseAcceptHeader($header);
print_r($accepts);
// displays:
// [
//     'application/json' => ['q' => 1, 'version' => '1.0'],
//      'application/xml' => ['q' => 1, 'version' => '2.0'],
//           'text/plain' => ['q' => 0.5],
// ]
public array parseAcceptHeader ( $header )
$header string

要解析的 header

return array

依品質分數排序的可接受值。分數最高的值將首先傳回。

                public function parseAcceptHeader($header)
{
    $accepts = [];
    foreach (explode(',', $header) as $i => $part) {
        $params = preg_split('/\s*;\s*/', trim($part), -1, PREG_SPLIT_NO_EMPTY);
        if (empty($params)) {
            continue;
        }
        $values = [
            'q' => [$i, array_shift($params), 1],
        ];
        foreach ($params as $param) {
            if (strpos($param, '=') !== false) {
                list($key, $value) = explode('=', $param, 2);
                if ($key === 'q') {
                    $values['q'][2] = (float) $value;
                } else {
                    $values[$key] = $value;
                }
            } else {
                $values[] = $param;
            }
        }
        $accepts[] = $values;
    }
    usort($accepts, function ($a, $b) {
        $a = $a['q']; // index, name, q
        $b = $b['q'];
        if ($a[2] > $b[2]) {
            return -1;
        }
        if ($a[2] < $b[2]) {
            return 1;
        }
        if ($a[1] === $b[1]) {
            return $a[0] > $b[0] ? 1 : -1;
        }
        if ($a[1] === '*/*') {
            return 1;
        }
        if ($b[1] === '*/*') {
            return -1;
        }
        $wa = $a[1][strlen($a[1]) - 1] === '*';
        $wb = $b[1][strlen($b[1]) - 1] === '*';
        if ($wa xor $wb) {
            return $wa ? 1 : -1;
        }
        return $a[0] > $b[0] ? 1 : -1;
    });
    $result = [];
    foreach ($accepts as $accept) {
        $name = $accept['q'][1];
        $accept['q'] = $accept['q'][2];
        $result[$name] = $accept;
    }
    return $result;
}

            
post() public method

傳回具有指定名稱的 POST 參數。如果未指定名稱,則傳回所有 POST 參數的陣列。

public array|mixed post ( $name null, $defaultValue null )
$name string

參數名稱

$defaultValue mixed

如果參數不存在,則為預設參數值。

                public function post($name = null, $defaultValue = null)
{
    if ($name === null) {
        return $this->getBodyParams();
    }
    return $this->getBodyParam($name, $defaultValue);
}

            
resolve() public method

將當前請求解析為路由和相關聯的參數。

public array resolve ( )
return array

第一個元素是路由,第二個元素是關聯的參數。

throws yii\web\NotFoundHttpException

如果請求無法解析。

                public function resolve()
{
    $result = Yii::$app->getUrlManager()->parseRequest($this);
    if ($result !== false) {
        list($route, $params) = $result;
        if ($this->_queryParams === null) {
            $_GET = $params + $_GET; // preserve numeric keys
        } else {
            $this->_queryParams = $params + $this->_queryParams;
        }
        return [$route, $this->getQueryParams()];
    }
    throw new NotFoundHttpException(Yii::t('yii', 'Page not found.'));
}

            
resolvePathInfo() protected method

解析目前請求 URL 的路徑資訊部分。

路徑資訊指的是在入口腳本之後和問號(查詢字串)之前的部分。開頭的斜線都會被移除(結尾的斜線會被保留)。

protected string resolvePathInfo ( )
return string

請求 URL 中在入口腳本之後和問號之前的部分。請注意,傳回的路徑資訊是解碼後的。

throws yii\base\InvalidConfigException

如果由於意外的伺服器配置而無法確定路徑資訊

                protected function resolvePathInfo()
{
    $pathInfo = $this->getUrl();
    if (($pos = strpos($pathInfo, '?')) !== false) {
        $pathInfo = substr($pathInfo, 0, $pos);
    }
    $pathInfo = urldecode($pathInfo);
    // try to encode in UTF8 if not so
    // https://www.w3.org/International/questions/qa-forms-utf-8.en.html
    if (
        !preg_match('%^(?:
        [\x09\x0A\x0D\x20-\x7E]              # ASCII
        | [\xC2-\xDF][\x80-\xBF]             # non-overlong 2-byte
        | \xE0[\xA0-\xBF][\x80-\xBF]         # excluding overlongs
        | [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}  # straight 3-byte
        | \xED[\x80-\x9F][\x80-\xBF]         # excluding surrogates
        | \xF0[\x90-\xBF][\x80-\xBF]{2}      # planes 1-3
        | [\xF1-\xF3][\x80-\xBF]{3}          # planes 4-15
        | \xF4[\x80-\x8F][\x80-\xBF]{2}      # plane 16
        )*$%xs', $pathInfo)
    ) {
        $pathInfo = $this->utf8Encode($pathInfo);
    }
    $scriptUrl = $this->getScriptUrl();
    $baseUrl = $this->getBaseUrl();
    if (strpos($pathInfo, $scriptUrl) === 0) {
        $pathInfo = substr($pathInfo, strlen($scriptUrl));
    } elseif ($baseUrl === '' || strpos($pathInfo, $baseUrl) === 0) {
        $pathInfo = substr($pathInfo, strlen($baseUrl));
    } elseif (isset($_SERVER['PHP_SELF']) && strpos($_SERVER['PHP_SELF'], $scriptUrl) === 0) {
        $pathInfo = substr($_SERVER['PHP_SELF'], strlen($scriptUrl));
    } else {
        throw new InvalidConfigException('Unable to determine the path info of the current request.');
    }
    if (strncmp($pathInfo, '/', 1) === 0) {
        $pathInfo = substr($pathInfo, 1);
    }
    return (string) $pathInfo;
}

            
resolveRequestUri() protected method

解析目前請求 URL 的請求 URI 部分。

這指的是在 $hostInfo 部分之後的部分。它包含 $queryString 部分(如果有的話)。此方法的實作參考了 Zend Framework 中的 Zend_Controller_Request_Http。

protected string|boolean resolveRequestUri ( )
return string|boolean

目前請求 URL 的請求 URI 部分。請注意,傳回的 URI 可能會根據用戶端進行 URL 編碼。

throws yii\base\InvalidConfigException

如果由於不尋常的伺服器配置而無法判斷請求 URI

                protected function resolveRequestUri()
{
    if ($this->headers->has('X-Rewrite-Url')) { // IIS
        $requestUri = $this->headers->get('X-Rewrite-Url');
    } elseif (isset($_SERVER['REQUEST_URI'])) {
        $requestUri = $_SERVER['REQUEST_URI'];
        if ($requestUri !== '' && $requestUri[0] !== '/') {
            $requestUri = preg_replace('/^(http|https):\/\/[^\/]+/i', '', $requestUri);
        }
    } elseif (isset($_SERVER['ORIG_PATH_INFO'])) { // IIS 5.0 CGI
        $requestUri = $_SERVER['ORIG_PATH_INFO'];
        if (!empty($_SERVER['QUERY_STRING'])) {
            $requestUri .= '?' . $_SERVER['QUERY_STRING'];
        }
    } else {
        throw new InvalidConfigException('Unable to determine the request URI.');
    }
    return $requestUri;
}

            
setAcceptableContentTypes() public method

設定可接受的內容類型。

關於參數格式,請參考 getAcceptableContentTypes()

另請參閱

public void setAcceptableContentTypes ( $value )
$value array

終端使用者可接受的內容類型。它們應該按偏好程度排序。

                public function setAcceptableContentTypes($value)
{
    $this->_contentTypes = $value;
}

            
setAcceptableLanguages() public method

public void setAcceptableLanguages ( $value )
$value array

終端使用者可接受的語言。它們應該按偏好程度排序。

                public function setAcceptableLanguages($value)
{
    $this->_languages = $value;
}

            
setBaseUrl() public method

設定應用程式的相對 URL。

預設情況下,URL 是根據入口腳本 URL 判斷的。提供此 setter 是為了在您想要變更此行為時使用。

public void setBaseUrl ( $value )
$value string

應用程式的相對 URL

                public function setBaseUrl($value)
{
    $this->_baseUrl = $value;
}

            
setBodyParams() public method

設定請求 body 參數。

另請參閱 getBodyParams()

public void setBodyParams ( $values )
$values array|object

請求 body 參數(名稱-值 對)

                public function setBodyParams($values)
{
    $this->_bodyParams = $values;
}

            
setHostInfo() public method

設定應用程式 URL 的 Schema 和主機部分。

如果某些 Web 伺服器上無法判斷 schema 和 hostname,則提供此 setter。

另請參閱 getHostInfo(),以了解有關此屬性的安全性相關注意事項。

public void setHostInfo ( $value )
$value string|null

應用程式 URL 的 schema 和 host 部分。結尾的斜線將被移除。

                public function setHostInfo($value)
{
    $this->_hostName = null;
    $this->_hostInfo = $value === null ? null : rtrim($value, '/');
}

            
setIsConsoleRequest() public method

定義於: yii\base\Request::setIsConsoleRequest()

設定一個值,指示當前請求是否透過命令列發出。

public void setIsConsoleRequest ( $value )
$value boolean

指示當前請求是否透過命令列發出的值

                public function setIsConsoleRequest($value)
{
    $this->_isConsoleRequest = $value;
}

            
setPathInfo() public method

設定當前請求的路徑資訊。

此方法主要為測試目的而提供。

public void setPathInfo ( $value )
$value string

目前請求的路徑資訊

                public function setPathInfo($value)
{
    $this->_pathInfo = $value === null ? null : ltrim($value, '/');
}

            
setPort() public method

設定用於不安全請求的端口。

提供此設定器是為了在某些伺服器配置中需要自訂埠號的情況。

public void setPort ( $value )
$value integer

埠號。

                public function setPort($value)
{
    if ($value != $this->_port) {
        $this->_port = (int) $value;
        $this->_hostInfo = null;
    }
}

            
setQueryParams() public method

設定請求 $queryString 參數。

另請參閱

public void setQueryParams ( $values )
$values array

請求查詢參數(名稱-值 對)。

                public function setQueryParams($values)
{
    $this->_queryParams = $values;
}

            
setRawBody() public method

設定原始 HTTP 請求 body,此方法主要由測試腳本用於模擬原始 HTTP 請求。

public void setRawBody ( $rawBody )
$rawBody string

請求主體

                public function setRawBody($rawBody)
{
    $this->_rawBody = $rawBody;
}

            
setScriptFile() public method

設定入口腳本檔案路徑。

通常可以從 $_SERVER['SCRIPT_FILENAME'] 取得入口腳本檔案路徑。如果您的伺服器配置未傳回正確的值,您可以配置此屬性以使其正確。

public void setScriptFile ( $value )
$value string

入口腳本檔案路徑。

                public function setScriptFile($value)
{
    $this->_scriptFile = $value;
}

            
setScriptUrl() public method

設定應用程式入口腳本的相對 URL。

提供此設定器是為了在某些 Web 伺服器上無法確定入口腳本 URL 的情況。

public void setScriptUrl ( $value )
$value string

應用程式入口腳本的相對 URL。

                public function setScriptUrl($value)
{
    $this->_scriptUrl = $value === null ? null : '/' . trim($value, '/');
}

            
setSecurePort() public method

設定用於安全請求的端口。

提供此設定器是為了在某些伺服器配置中需要自訂埠號的情況。

public void setSecurePort ( $value )
$value integer

埠號。

                public function setSecurePort($value)
{
    if ($value != $this->_securePort) {
        $this->_securePort = (int) $value;
        $this->_hostInfo = null;
    }
}

            
setUrl() public method

設定目前請求的相對 URL。

URI 必須參考在 $hostInfo 之後的部分。請注意,URI 應為 URL 編碼。

public void setUrl ( $value )
$value string

要設定的請求 URI

                public function setUrl($value)
{
    $this->_url = $value;
}

            
trigger() public method

定義於: yii\base\Component::trigger()

觸發事件。

此方法表示事件的發生。它會調用事件的所有附加處理程序,包括類別層級的處理程序。

public void trigger ( $name, yii\base\Event $event null )
$name string

事件名稱

$event yii\base\Event|null

事件實例。如果未設定,將會建立預設的 yii\base\Event 物件。

                public function trigger($name, Event $event = null)
{
    $this->ensureBehaviors();
    $eventHandlers = [];
    foreach ($this->_eventWildcards as $wildcard => $handlers) {
        if (StringHelper::matchWildcard($wildcard, $name)) {
            $eventHandlers[] = $handlers;
        }
    }
    if (!empty($this->_events[$name])) {
        $eventHandlers[] = $this->_events[$name];
    }
    if (!empty($eventHandlers)) {
        $eventHandlers = call_user_func_array('array_merge', $eventHandlers);
        if ($event === null) {
            $event = new Event();
        }
        if ($event->sender === null) {
            $event->sender = $this;
        }
        $event->handled = false;
        $event->name = $name;
        foreach ($eventHandlers as $handler) {
            $event->data = $handler[1];
            call_user_func($handler[0], $event);
            // stop further handling if the event is handled
            if ($event->handled) {
                return;
            }
        }
    }
    // invoke class-level attached handlers
    Event::trigger($this, $name, $event);
}

            
validateCsrfToken() public method

執行 CSRF 驗證。

此方法將透過與儲存在 Cookie 或 Session 中的 CSRF 令牌進行比較來驗證使用者提供的 CSRF 令牌。此方法主要在 yii\web\Controller::beforeAction() 中調用。

請注意,如果 $enableCsrfValidation 為 false 或 HTTP 方法為 GET、HEAD 或 OPTIONS 之一,則此方法將不會執行 CSRF 驗證。

public boolean validateCsrfToken ( $clientSuppliedToken null )
$clientSuppliedToken string|null

要驗證的使用者提供的 CSRF 令牌。如果為 null,令牌將從 $csrfParam POST 欄位或 HTTP 標頭中檢索。此參數自 2.0.4 版本起可用。

return boolean

CSRF 令牌是否有效。如果 $enableCsrfValidation 為 false,此方法將傳回 true。

                public function validateCsrfToken($clientSuppliedToken = null)
{
    $method = $this->getMethod();
    // only validate CSRF token on non-"safe" methods https://tools.ietf.org/html/rfc2616#section-9.1.1
    if (!$this->enableCsrfValidation || in_array($method, ['GET', 'HEAD', 'OPTIONS'], true)) {
        return true;
    }
    $trueToken = $this->getCsrfToken();
    if ($clientSuppliedToken !== null) {
        return $this->validateCsrfTokenInternal($clientSuppliedToken, $trueToken);
    }
    return $this->validateCsrfTokenInternal($this->getBodyParam($this->csrfParam), $trueToken)
        || $this->validateCsrfTokenInternal($this->getCsrfTokenFromHeader(), $trueToken);
}