gpt4 book ai didi

java - HEAD 请求上的 HTTP 响应内容类型不同

转载 作者:太空宇宙 更新时间:2023-11-04 07:03:32 27 4
gpt4 key购买 nike

我编写了简单的代码来获取给定 URL 的内容类型。为了使处理速度更快,我进行了更改,将请求方法设置为 HEAD

// Added a random puppy face picture here 
// On entering this query in browser (or Poster<mozilla> or Postman<chrome>), the
// content type is shown as image/jpeg

URL url = new URL("http://www.bubblews.com/assets/images/news/521013543_1385596410.jpg");

HttpURLConnection connection = (HttpURLConnection) url
.openConnection();
connection.setRequestMethod("HEAD");
connection.connect();
String contentType = connection.getContentType();
System.out.println(contentType);
if (!contentType.contains("text/html")) {
System.out.println("NOT TEXT/HTML");
// Do something
}

如果不是text/html,我试图实现一些目标,但是当我将请求方法设置为HEAD时,内容类型显示为text/html。如果我使用 PosterPostman 触发相同的 HEAD 请求,我会看到 content-typeimage/jpeg

那么在这段 Java 代码中,是什么导致内容类型发生变化呢?有人可以指出我可能犯的任何错误吗?

注意:我使用了 this发帖作为引用

最佳答案

您可能应该添加一个 Accept header 和/或 User-Agent header 。

大多数 Web 服务器根据客户端设置的 header (例如 Web 浏览器、Java HttpURLConnection、curl 等)提供不同的内容。对于 AcceptAccept-EncodingAccept-LanguageUser-AgentCookieReferer 来说尤其如此。

例如,如果 Referer header 未链接到内部页面,网络服务器可能会拒绝传送图像。在您的情况下,如果网络服务器看起来像是某个机器人正在抓取图像,则它不会提供图像。因此,如果您伪造请求(例如来自网络浏览器),服务器可能会传送该请求。

在抓取网站时,您应该尊重 robots.txt(因为您的行为就像一个机器人)。因此严格来说,在执行大量请求或由此创建大业务时伪造 User-Agent 时,您应该小心。我不知道大型网站对这种行为有何 react ,尤其是当有人绕过那里的业务时......

请不要将此视为责备。我只是想向您指出这一点,这样您就不会遇到麻烦。也许这根本不是问题,YMMV。

关于java - HEAD 请求上的 HTTP 响应内容类型不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21756303/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com