用Java打开链接,如何隐藏GET参数

6
我想从Java打开一个链接,我尝试了这个:
public static void main(String[] args) {
       try {
         //Set your page url in this string. For eg, I m using URL for Google Search engine
         String url = "http://myurl.com?id=xx";
         java.awt.Desktop.getDesktop().browse(java.net.URI.create(url));       
       }
       catch (java.io.IOException e) {
           System.out.println(e.getMessage());
       }
   }

它的工作正常,但问题在于查询字符串在该URL中。我不想将其作为查询字符串传递,因为它是一个秘密密钥。它应该作为隐藏的网页请求传递。我该怎么做?


1
你应该知道,即使是当Web浏览器使用你看不到的密钥打开URL时,它也不会出现在地址栏中。它将通过网络发送并且非常明显可见。 - John Smith
2个回答

6

你不能直接这样做。

你需要使用POST而不是GET来“隐藏”值,URL不会对访问它的方法进行编码,因此它总是使用GET。

你可以构建一个HTML文件,自动使用一些JavaScript执行POST请求到指定的URL,并打开它(使用file:// URL)。

但请注意,“隐藏”参数并没有增加真正的安全性!有兴趣的用户想要知道他的计算机发送给某个站点的值,仍然能够看到它。虽然可能需要花费一些努力去找到它,但这绝对不是不可能的。


@Nighil:不是的。如果你理解我写的内容,那么这不会是你接下来要问的问题。如果你不理解,那么举例也无济于事。 - Joachim Sauer
如果用户复制URL,那么会出现问题,这就是为什么我想隐藏查询字符串的原因。我只需要用户只能通过Java浏览此网站。 - Nighil
你不能这样做。即使按照我描述的方式隐藏URL也无法解决问题:他仍然能够找到你传输的信息。 - Joachim Sauer
我在这里将系统的IP地址作为URL键传递,并在数据库中检查是否允许此IP查看该站点,只有被允许的用户才能查看该站点。对于普通用户来说,他们会认为这只能通过Java应用程序工作。 - Nighil
@Nighil:那是一种可怕的安全机制,极易被破解。另外:你想让这种机制防止普通用户 “黑客”您的系统,还是想避免具有某些专业知识的攻击者?提示:应该是后者! - Joachim Sauer

1
如果不需要在浏览器中显示特定的URL,则可以将链接处理为HttpURLConnection(请参见JavaDoc)。
这里有一个示例:here

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接