[英]Next.js api route with IP address
在我的 next.js api 路由之一中,
例如: pages/api/example.js
我有以下簡單的代碼。 然后,在這條路線中,我向服務器發布了請求。
export default async function example(req, res) {
const data = await axios.post(
https://another_server_Url, // another server api
{
data
})
res.status(200).json({ name: 'John Doe' })
}
我的問題是another_server
api 是否實現了分級限制機制,我可以先獲取用戶 IP 地址,然后通過 axios 請求以某種方式傳遞 IP 地址。 所以another_server
api 可以識別真實的ip。
據我了解當前代碼,next.js 服務器以某種方式成為代理。
現在的問題是,因為我在下一個路由器 api 中調用了 Api,所以 IP 地址將始終是我的next.js
服務器。
您可以從req.headers['x-forwarded-for']
獲取客戶端的 IP - 看看:如何在 node 中確定用戶的 IP 地址。 然后,將此 IP 在 axios POST 請求正文中傳遞給another_server
。
編輯:
為了回應您在下面的評論,實現在很大程度上取決於后端服務器 ( another_server
) 的配置以及它如何讀取客戶端 IP。 例如,檢查它是否使用請求標頭來確定 IP - 如果是,請識別特定標頭並在 axios 調用中覆蓋它以包含原始客戶端 IP,例如:
const clientIp = (req.headers['x-forwarded-for'] || '').split(',').pop().trim() ||
req.socket.remoteAddress;
const data = await axios({
method: 'post',
url: 'https://google.com',
headers: {
'x-forwarded-for': clientIp
},
// ...
});
另一種解決方案是簡單地將請求從客戶端直接發送到another_server
並完全跳過該問題,但我認為在您的情況下這不是一個可行的解決方案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.