【问题标题】:Next JS how to Redirect user based on the IP address?Next JS如何根据IP地址重定向用户?
【发布时间】:2020-03-28 07:14:13
【问题描述】:

我目前在 app.get('/anyPath') 中使用 express 和这个方法来确定客户端的 IP 地址。

var ip = req.headers['x-real-ip'] || req.connection.remoteAddress
    if (ip.substr(0, 7) == "::ffff:") {
      ip = ip.substr(7)
      console.log(ip)
    }

有不同的方法吗?我发现自己在所有 app.get() 调用中重复上述代码行以匹配页面的不同路径。

【问题讨论】:

  • 尝试为此编写一个小型中间件
  • hmm,有趣的问题,因为 nextjs 有缓存层和服务器渲染,我认为你的问题应该在 now 层处理。我不是 100% 确定是否有解决方案
  • 我认为传入的版本将包含文档中间件,您可以在那里完成。看看这里github.com/zeit/next.js/issues/7208你也可以有一些解决方法

标签: node.js reactjs express next.js


【解决方案1】:

从 Express 文档 [中间件] https://expressjs.com/en/guide/using-middleware.html 修改的示例

app.use(function (req, res, next) {
  if (req.method === 'get') {
    var ip = req.headers['x-real-ip'] || req.connection.remoteAddress
      if (ip.substr(0, 7) == "::ffff:") {
        ip = ip.substr(7)
        console.log(ip)
      }
  }
  next()
})

【讨论】:

  • 问题是关于 nextjs,它实际上并没有表达,所以我认为您的解决方案可能不起作用
  • 刚刚意识到我说错了,nextjs中可能有中间件:)
  • @ducmai 你的意思是你把这段代码加到了 next.js 中的pages/_app.js 文件中吗? (app.use) 中的app 变量指的是什么?是指express还是next
  • 此答案中的代码来自自定义快递服务器,因此您可以在下一个 js 中阅读自定义服务器
  • @ducmai 我明白了,我只需要确认use()app = express()app = next() // Next.js (not the next callback) 的成员。
猜你喜欢
  • 2012-04-12
  • 2012-04-07
  • 1970-01-01
  • 2015-03-01
  • 2018-04-05
  • 2019-08-27
  • 1970-01-01
  • 1970-01-01
  • 2012-08-20
相关资源
最近更新 更多