![](/img/trans.png)
[英]ZF2: How to make Zend\Validator\Hostname accept url strings with and without http:// or https://
[英]ZF2: Define URL http or https
這是我的問題。 我的應用程序中有幾個使用SSL的頁面,例如lggin頁面。 當我進入主頁(沒有SSL)時,視圖創建的每個鏈接(href = $ this-> url(...))都是純HTML,甚至是登錄頁面。 另一方面,當我進入登錄頁面時,所有其他鏈接都顯示為https。
在控制器中,我操縱頁面是否使用SSL,這是可以的。 但是我想在用戶瀏覽網站時為用戶顯示正確的鏈接,對於SSL頁面顯示https,對於非SSL頁面顯示http。
謝謝。
首先,如果您有HTTPS,則應在任何頁面上使用它。 當您有一些可通過HTTPS訪問的頁面,而另一些則無法訪問時,這確實違反了信任網絡。 當然,您可能在某些頁面上強制使用HTTPS(因此沒有HTTP),但反之亦然總是一個壞主意。
話雖如此,您可以創建一個scheme
路由。 使用該方案,您可以在某些路由上指定HTTPS:
'secure' => [
'type' => 'scheme',
'options' => [
'scheme' => 'https',
'defaults' => [
// the usual stuff
],
],
'may_terminate' => false,
'child_routes' => [
// all your https routes here
],
],
因為其中一些“安全”路由可能是在供應商級別定義的(例如,您使用ZfcUser),所以可以使用路由的“原型”。 例如,所有ZfcUser路由只能通過HTTPS訪問。 ZfcUser的“主要”路線是zfcuser
:
'router' => [
'prototypes' => [
// Define "secure" prototype to add to routes
'secure' => [
'type' => 'scheme',
'options' => ['scheme': 'https'],
],
],
// Apply the scheme route to ZfcUser
'routes' => [
'zfcuser' => [
'chain_routes' => ['secure'],
],
],
],
原型設計“准備”到zfcuser
的secure
路徑。 因此,這使zfcuser
及其所有子級成為secure
的子級路由。 因此,所有zfcuser
路由均使用HTTPS定義。
到此為止:如果您現在組裝路線,它們將自動獲得HTTPS。 在第一個示例的secure
路由內進行路由login
,您可以通過$this->url('secure/login');
獲取URL $this->url('secure/login');
。
在第二種情況下(原型),您無需提及原型,只需使用$this->url('zfcuser');
用戶的路線。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.