首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过Heroku获取客户端IP地址

通过Heroku获取客户端IP地址
EN

Stack Overflow用户
提问于 2019-12-20 23:34:14
回答 1查看 83关注 0票数 0

我有一个带有Cloudflare的Heroku应用程序,我尝试根据客户端的本地化显示不同的版本。它在开发中工作得很好,但在生产中并非如此(总是显示/en,而不是/fr)。我使用express-ip npm包。

代码:

代码语言:javascript
复制
const express = require('express');
const router = express.Router();

const expressip = require("express-ip");

router.use(expressip().getIpInfoMiddleware);

router.get("/", function ipFrance(req, res) {
  const ipInfo = req.ipInfo;
  const ipInfoRegion = req.ipInfo.region;
  const ipInfoCountry = req.ipInfo.country;

  //var message = `Hey, you are browsing from ${ipInfoRegion}, ${ipInfoCountry}`;
  if(ipInfoCountry == "FR" || ipInfoRegion == "Wallonia") {
      res.redirect("/fr");
  } else {
      res.redirect("/en");
  }
});

module.exports = router; 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-20 23:53:58

不提供基于IP地址的转换。There's an HTTP header for that,以及使用该标头的express API方法req.acceptsLanguages()

代码语言:javascript
复制
router.get("/", function (req, res) {
  if (req.acceptsLanguages("fr")) {
    res.redirect("/fr");
  } else {
    res.redirect("/en");
  }
});

一些以法语为母语的人可能喜欢用英语浏览,而世界上的其他地方可能更喜欢用法语浏览。让他们做决定,而不是为他们做决定。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59427790

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档