1

根据Twitter 仅允许的讨论127.0.0.1(它认为localhost无效),我正在使用 Twitter 测试 Oauth2 。

我正在使用 Javascript 打开一个弹出窗口并检测到注册的 urlI 的回调:https://127.0.0.1:8144/Oauth2Callback

但是,我的 JavaScript 源自localhost,并且根据来源,对于“同源”政策,这两者被认为是不同的。

如何编写从127.0.0.1to的重定向localhost

我正在使用 Java 和 tukey-url-rewrite,所以两者都可以。


我的控制器看起来像这样:

@RequestMapping("/oauth2callback")
@ResponseBody
public String callback() {
    return "oauth2callback";
}

<rule>
    <name>Twitter Hack</name>
<condition name="host" operator="equal"> ??? 127.0.0.1 ??? /condition>
    <from>(.*)</from>
    <to type="redirect"> ??? localhost ???</to> 
</rule>

我想:

twitter --(callback)--> 127 --(redirect)--> localhost

4

2 回答 2

1

检查操作系统的 etc/host 文件并将 127.0.0.1 设置为 localhost 字符串。默认情况下它应该在那里,但有时它可能是一个问题。在 Windows 上,它位于 C:\windows\System\drivers\etc\ 文件夹下。

它是您操作系统的名称解析,因此您实际上可以将 IP 映射到名称以解决主机上的问题。

于 2013-10-03T17:52:46.983 回答
0

这似乎有效:

@RequestMapping("/oauth2callback")
public String callback(HttpServletRequest request) {

    /*
     * Terrible hack for testing Twitter Oauth on 'localhost'
     */
    if (request.getServerName().contains("127.0.0.1")){
        int port = request.getServerPort();
        String query = (request.getQueryString() == null) ? "" : "?" +request.getQueryString();
        String url = "redirect:https://localhost:" + port +"/oauth2callback" + query;
        return url;
    }

    return "account/oauth2callback";
}

account/oauth2callback是一个简单的jsp,只有:

<body>
    <p>oauth2callback</p>
</body>

通过 tukey-url-rewrite 可能有更好的方法来做到这一点。

于 2013-10-03T21:01:20.270 回答