【问题标题】:404 not found in telnet, works fine in browser在 telnet 中找不到 404,在浏览器中可以正常工作
【发布时间】:2011-02-22 23:57:09
【问题描述】:

我有一个非常烦人的问题,当我在浏览器中打开一个 url (http://celebs.widewallpapers.net/md/a/adriana-lima/1440/Adriana-Lima-1440x900-002.jpg) 时,它工作正常.. 但是当我尝试通过 bash 上的 telnet 访问它时,我得到 404 not found!!

我的确切终端:

$ telnet celebs.widewallpapers.net 80

头 /md/a/adriana-lima/1440/Adriana-Lima-1440x900-002.jpg HTTP/1.0 [进入] [输入]

HTTP/1.1 404 未找到

服务器:nginx

日期:2010 年 5 月 23 日星期日 21:36:05 GMT

内容类型:文本/html;字符集=windows-1251

内容长度:166 连接:关闭

请帮我解决这个问题,因为我正在尝试制作一个 C 批处理下载器,它几乎与 telnet 一样工作。

【问题讨论】:

  • calmh 提供的答案可能是正确的,但是您可以使用wireshark 和/或 tcpdump 来捕获两个事务(使用 telnet 和使用浏览器),然后检查它们的不同之处。浏览器可能会发送很多对您的 telnet 版本来说不必要甚至不准确的东西,但也会有一些需要的东西。您可能还想查看工具 wget(网络获取)、curl(复制 URL)和 nc(网络猫)。 Telnet 可能会在进入直通模式之前发送一些终端设置信息。
  • 为什么会有python标签?
  • @puddingfox 可能是为了生成视图。不过,一些管理员应该取消它。

标签: python c http telnet


【解决方案1】:

您没有传递主机标头。根据 HTTP/1.1,您需要告诉 Web 服务器您希望与哪个虚拟主机通信。即使您在请求中指定 HTTP/1.0,今天 99% 的服务器也只会使用 HTTP/1.1。

jb@apto % telnet celebs.widewallpapers.net 80
...
HEAD /md/a/adriana-lima/1440/Adriana-Lima-1440x900-002.jpg HTTP/1.1
Host: celebs.widewallpapers.net

HTTP/1.1 200 OK
Server: nginx
Date: Sun, 23 May 2010 22:08:36 GMT
Content-Type: image/jpeg
Connection: close
Last-Modified: Sun, 27 Apr 2008 14:30:17 GMT
ETag: "4784e0-264b0-48148df9"
Accept-Ranges: bytes
Content-Length: 156848

Connection closed by foreign host.

【讨论】:

    猜你喜欢
    • 2014-10-30
    • 1970-01-01
    • 1970-01-01
    • 2014-03-15
    • 2019-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多