当前位置: 首页 > 面试题库 >

如何覆盖HttpURLConnection中的HTTP标头“主机”?

吕峰
2023-03-14
问题内容

我的代码如下:

URL url = new URL("1.0.0.25/otfg/services");
HttpURLConnection cnx = url.openConnection();
cnx.setRequestProperty("Host", "example.org");

但是,当我使用tcpdump登录传出程序包时,http头“主机”为1.0.0.25。

可能是在发送过程的稍后阶段覆盖了HTTP标头“主机”,如果可以的话,如何避免这种行为。


问题答案:

最后一条评论解决了我的问题:

System.setProperty("sun.net.http.allowRestrictedHeaders", "true")

或在VM启动时:

-Dsun.net.http.allowRestrictedHeaders=true


 类似资料:
  • 问题内容: 我试图对Java Html Document进行一些改进,但是我遇到了与之相关的问题。一件事是,如果用户代理是Java VM,则某些服务器会阻止请求。另一个问题是不会设置或标头字段。由于多个站点使用这些字段来验证是否从其自己的站点访问了内容,因此在此也将我屏蔽了。据我所知,唯一的解决方案是替换HTTP协议的URL处理程序。还是有任何方法可以修改默认的HTTP处理程序? 问题答案: 打开

  • 我正在尝试连接到外部web套接字服务器,该服务器不是我自己运行的。我想从localhost javascript文件连接到它,因此origin头的值为null。 我知道这是一项打击跨网站伪造的措施。然而,因为我在localhost,我应该能够伪造这一点,通过让Chrome发送自定义的Origin标头。 可能吗?(如果我需要延期,可以) 如果没有,实现上述目标的最佳选择是什么?谢谢你。

  • 问题内容: 我正在使用Jakarta Commons HttpClient 3.1编写一个负载测试工具,该工具需要针对不同的服务器,并假装它针对了HTTP服务器中的正确虚拟主机。为此,我需要能够将请求中的“主机” HTTP标头设置为与我要连接的实际主机名不同的主机名。 似乎很明显,我应该使用,但是HttpClient只是忽略了这一点,并且总是在“主机”标头中发送我要连接的真实主机名(我为“ htt

  • 问题内容: 我有一个球衣客户,我想与该客户解组。问题是远程Web服务将应用程序/八位字节流作为内容类型发送回去,因此Jersey不知道如何解组(我对XML等返回text / html具有类似的错误)。我无法更改Web服务。 我想做的是覆盖内容类型,并将其更改为application / json,以便jersey知道要使用哪个编组器。 我无法使用json marshaller注册applicati

  • 对于Spring Boot2.1,默认情况下禁用bean重写,这是一件好事。 然而,我确实有一些测试,其中我使用mockito用模拟实例替换bean。在默认设置下,使用这种配置的测试将由于bean重写而失败。 我发现唯一有效的方法是通过应用程序属性启用bean重写: 但是,我真的希望确保测试配置的bean定义设置最小,这一点将由spring在禁用重写的情况下指出。 我正在重写的bean是 在导入到

  • 我想在使用Html Unit时覆盖DNS解析,以便我可以测试负载均衡器后面的显式服务器。这应该在不更改etc/hosts文件的情况下完成。 这个问题得到了一个答案,如何用普通的java解决这个任务:如何在Java的HTTP连接中覆盖DNS 但我需要一个Html单元的解决方案。 Html单元使用apache httpclient。可以改变httpclient的连接管理器吗?(参见上面的其他问题)