如何将 http://localhost:9000 配置为 http:/mylocal.loc
Posted
技术标签:
【中文标题】如何将 http://localhost:9000 配置为 http:/mylocal.loc【英文标题】:How to configure http://localhost:9000 to http:/mylocal.loc 【发布时间】:2011-08-31 22:35:29 【问题描述】:我正在使用默认使用 http://localhost:9000 的 Play 框架。我也在尝试使用 Twitter,它需要使用回调 URL 进行身份验证,但 Twitter 不会接受 http://localhost:9000 作为回调 URL。
如何配置我的 localhost 以映射到 http://mylocal.loc 之类的东西(类似于 Apache vhost),而不是 http://localhost:9000?
【问题讨论】:
【参考方案1】:问题是网址需要按以下格式输入:
http://127.0.0.1:9000/twitter-callback
以上内容完美地用作 Twitter 回调地址。
Twitter 没有尝试直接访问 localhost,它只是将上述地址据我了解,将其粘贴到 HTTP 响应标头中,提示使用哪个浏览器执行直接的 302 重定向。
以下博客文章提供了一些关于这个问题的宝贵信息:
http://www.tonyamoyal.com/2009/08/17/how-to-quickly-set-up-a-test-for-twitter-oauth-authentication-from-your-local-machine/
【讨论】:
很好,你找到了答案,但很难从问题中猜到这一点 - 他们接受 127.0.0.1 但不接受 localhost 也有点奇怪,所以博客中解释的 bit.ly 方法将从长远来看,可能会更加稳固。 是的,我想这会在未来证明这一点,我希望。 ;) 因为这是正确答案,我建议您接受它,如常见问题解答中所述。【参考方案2】:twitter 不能使用 localhost 作为回调 url 的原因是因为 localhost 是一个重定向到您的计算机环回接口。换句话说,本地主机始终是您所在的计算机。为了让其他计算机(包括 twitter)访问您的主机,您需要使用外部 IP 地址或主机名。
要获取您的 IP 地址,请访问 whatsmyip。这将告诉您您的外部 IP 地址(互联网上的其他计算机可以访问)。如果你有一个静态 IP 地址,你可以购买一个域名,或者从 no-ip 或 dyndns 之类的东西中免费获得一个,这样更容易记住和输入。您需要将该域中的 DNS 记录指向您的 IP。您可能还需要进行一些端口转发和其他操作,以使其通过端口 9000 而不是路由器(取决于您的网络设置)到达您的计算机。
可能更简单的选择是在您进行测试时获得免费的托管/域服务。
【讨论】:
重定向应该可以工作,甚至到本地主机。要记住的是,当 HTTP 响应标头包含 302 重定向时,它并不关心它在哪里。它就像一个发射后忘记的导弹,告诉你的浏览器指向那里,不管它是什么。 Twitter 从不尝试直接访问或 ping 地址。【参考方案3】:编辑:josef 的问题与他的本地服务器无法访问 Internet 无关,请参阅他自己的答案以了解正在发生的事情和解决方案。此答案处理需要从 Internet 看到本地服务器的情况。
localhost,又名 127.0.0.1 是每台计算机上指向计算机本身的名称。所以 Twitter 看自己,显然没有看到服务,故事的结尾。
如果您的计算机连接到本地网络,则该网络很可能已经过 NAT 并使用私有地址,例如 192.168.x.x、10.x.x.x 或 172.16x.x.x。这些地址是私有的(在本地网络之外不知道,因为没有在 Internet 上路由),所以这也对您没有帮助。
剩下的是您的公共 IP 地址,即您的路由器从您的 ISP 获得的地址。通过 DNS,您可以将该地址映射到一个名称,这是一项免费服务,它允许您将一个固定的 name 也映射到一个变量 address 是 DynDNS。
但是等等,还有更多!除非您在路由器中定义了一些转发规则,在您的情况下,您的路由器通过不允许来自专用网络 IN 外部的流量来保护您的网络,在您的情况下,该规则将端口 9000 上的传入 tcp 流量转发到您机器的端口 9000。
完成所有这些后,您的计算机就可以从外部访问,并且您的回调应该可以正常工作。
【讨论】:
恐怕这没有回答问题:(【参考方案4】:编辑您的 hosts
文件并添加以下行:
127.0.0.1 mylocal.loc
对于 Windows,它位于 C:\Windows\System32\drivers\etc\
。在 *nix 上,您可以在 /etc
中找到它。
【讨论】:
这对localhost:9000 不起作用,就像在原始问题中一样。 hosts 文件并不真正处理端口号。以上是关于如何将 http://localhost:9000 配置为 http:/mylocal.loc的主要内容,如果未能解决你的问题,请参考以下文章
POST http://localhost:9000/net::ERR_CONNECTION_REFUSED
使用 Sonarqube-4.5.1 无法通过 http://localhost:9000 访问 SonarQube 服务器