[英]How do I get the IP of a user in Nuxt's asyncData method?
如果nuxt在nginx等代理后面運行,那么你可以通過讀取x-real-ip或x-forwarded-for在asyncData中獲取客戶端的IP地址。 請注意,如果調用已通過其他代理(如果有多個條目,則客戶端是第一個),則 x-forwarded-for 可以包含逗號分隔的 IP。
確保在您的 nginx 站點配置中設置標頭
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
然后您可以讀取 asyncData 中的標頭:
async asyncData(context) {
if (process.server) {
const req = context.req
const headers = (req && req.headers) ? Object.assign({}, req.headers) : {}
const xForwardedFor = headers['x-forwarded-for']
const xRealIp = headers['x-real-ip']
console.log(xForwardedFor)
console.log(xRealIp)
}
}
有一個關於此的 github 線程,這使得在兩種環境(本地,生產)中獲取 IP 變得微不足道
const ip = req.connection.remoteAddress || req.socket.remoteAddress
但請注意,您需要確保正確轉發代理標頭。 因為 nuxt 在傳統的 Web 服務器后面運行,無需轉發代理標頭,您將始終獲得 Web 服務器的本地 IP(127.0.0.1,除非環回已更改)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.