簡體   English   中英

Laravel 請求顯示 IP 地址的“::1”

[英]Laravel request showing '::1' for IP address

我正在嘗試在 Laravel 中查找用戶的 IP 地址。 request->ip()似乎可以完成這項工作,但這只是返回::1 我也試過$_SERVER['REMOTE_ADDR'] ,但得到相同的結果; $_SERVER為我返回以下內容:

array:24 [▼
  "DOCUMENT_ROOT" => "xxx"
  "REMOTE_ADDR" => "::1"
  "REMOTE_PORT" => "51995"
  "SERVER_SOFTWARE" => "PHP 5.5.32 Development Server"
  ...
]

REMOTE_ADDR對我來說總是::1 我嘗試了 3 種不同的 WiFi 網絡。 我做錯了什么嗎?

編輯:在$_SERVER關聯數組中,沒有任何轉發,所以我不期望 localhost。

編輯

我知道這是我的本地機器。 有沒有辦法在測試中將其存根,以便我可以對其進行斷言(例如,它匹配某種格式)?

我假設您在提出請求的同一台服務器/計算機上運行您的網站。

::1127.0.0.1或 IPv6 中的localhost (您當前的網卡地址)。

因此,如果您將網站放在遠程服務器上,您將獲得用戶 IP 地址。

我猜您可以在配置文件中選擇 IPv4 或 IPv6 顯示。

發生這種情況,如果您的項目位於本地主機上,請上傳到服務器。

這可能是因為 $_SERVER['REMODE_ADDR'] 僅在存在遠程地址時才定義,即有人從瀏覽器請求您的頁面。 使用 cron 腳本在本地執行並且設置可能為空。 如果它破壞了您的代碼,請嘗試在腳本開始時自行設置:

if( !isset($_SERVER['REMODE_ADDR']) ) {
   $_SERVER['REMODE_ADDR'] = '127.0.0.1';
}

使用 Cron 作業時未定義的 REMOTE_ADDR - Laravel 背包

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM