有一个 Java 应用程序请求一个页面,我希望阻止它。
我认为这样做的一种方法是使用会话或 cookie,但我不确定 Java URL 方法是否可以处理它们。
除了使用会话或 cookie 之外,还有其他方法可以区分来自这个 Java 应用程序的请求并阻止它吗?我知道它有一个独特的 Java 用户代理标头,但我希望更准确。
有一个 Java 应用程序请求一个页面,我希望阻止它。
我认为这样做的一种方法是使用会话或 cookie,但我不确定 Java URL 方法是否可以处理它们。
除了使用会话或 cookie 之外,还有其他方法可以区分来自这个 Java 应用程序的请求并阻止它吗?我知道它有一个独特的 Java 用户代理标头,但我希望更准确。
标题问题的答案是这些URL.openXxx
方法不理解 cookie。
(如果您的服务器配置为在请求 URL 本身中接受会话令牌,则这些URL.openXxx
方法不会妨碍您。但是,这种方法是不安全的。)
然后我们来到你的问题的主体。
...除了使用会话或 cookie 之外,还有其他方法可以区分来自这个 java 应用程序的请求并阻止它吗?
在这一点上,我假设您正在谈论在服务器端阻塞请求。我应该指出,“坏人”客户端用来发送请求的东西现在已经无关紧要了。(它可以使用URL
Apache HTTPComponents 或者它可以在汇编代码中实现 HTTP 协议栈!)
所以真正的问题是您有哪些选项可以阻止不需要的请求。答案是:
总之,cookie 是最好的解决方案,因此“好人”客户端应用程序需要使用能够进行 cookie 管理和在请求中设置 cookie 的库。
URL 只是您尝试与之交谈的服务器的代表。它有一些方便的方法来打开连接等等,但仅此而已。
会话以两种方式之一进行处理:cookie 或 url 重写。这些与 URL 类几乎没有关系(除了会话 id 被放置在后者的 URL 中)。
用户代理似乎是您最好的选择,缺少一些密码(http 基本、摘要等)或 ssl 证书验证。话虽如此,用户代理完全由客户端自行决定,并且可以很容易地被客户端更改以模拟其他浏览器。