5

Web ページを読み取るプログラムを作成しています。読んでみました

    http://en.wikipedia.org/wiki/France

しかし、その後、次の応答がありました。

    HTTP/1.0 301 Moved Permanently.

私が理解できないのは、(場所フィールドの) 新しいリンクが私が与えたものと同じだということです... では、リダイレクト ページの新しいリンクはどこにありますか?

応答は次のとおりです。

    HTTP/1.0 301 Moved Permanently
    Date: Wed, 16 Jan 2013 22:26:03 GMT
    Server: Apache
    X-Content-Type-Options: nosniff
    Cache-Control: private, s-maxage=0, max-age=0, must-revalidate
    Vary: Accept-Encoding,X-Forwarded-Proto,Cookie
    Last-Modified: Wed, 16 Jan 2013 22:26:03 GMT
    Location: http://en.wikipedia.org/wiki/France
    Content-Length: 0
    Content-Type: text/html; charset=utf-8
    X-Cache: MISS from sq64.wikimedia.org
    X-Cache-Lookup: HIT from sq64.wikimedia.org:3128
    Age: 45
    X-Cache: HIT from amssq32.esams.wikimedia.org
    X-Cache-Lookup: HIT from amssq32.esams.wikimedia.org:3128
    X-Cache: MISS from amssq35.esams.wikimedia.org
    X-Cache-Lookup: MISS from amssq35.esams.wikimedia.org:80
    Connection: close

ありがとう


エリックの回答によると、プログラムをもう一度テストします。

次のコマンドを送信しました。

    GET http://www.wikipedia.org/wiki/france HTTP/1.1

応答は次のとおりです。

    HTTP/1.0 301 Moved Permanently
    Date: Thu, 17 Jan 2013 22:36:04 GMT
    Server: Apache
    Location: http://en.wikipedia.org/wiki/france
    Content-Length: 243
    Content-Type: text/html; charset=iso-8859-1
    X-Cache: MISS from sq64.wikimedia.org
    X-Cache-Lookup: MISS from sq64.wikimedia.org:3128
    X-Cache: MISS from amssq45.esams.wikimedia.org
    X-Cache-Lookup: MISS from amssq45.esams.wikimedia.org:3128
    X-Cache: MISS from knsq26.knams.wikimedia.org
    X-Cache-Lookup: MISS from knsq26.knams.wikimedia.org:80
    Connection: close

    <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
    <html><head>
    <title>301 Moved Permanently</title>
    </head><body>
    <h1>Moved Permanently</h1>
    <p>The document has moved <a href="http://en.wikipedia.org/wiki/france">here</a>.</p>
    </body></html>

もちろん、これは予想されていたことです。今私は送った:

    GET http://en.wikipedia.org/wiki/france HTTP/1.1

そして、応答は次のとおりでした。

    HTTP/1.0 301 Moved Permanently
    Date: Wed, 16 Jan 2013 22:26:03 GMT
    Server: Apache
    X-Content-Type-Options: nosniff
    Cache-Control: private, s-maxage=0, max-age=0, must-revalidate
    Vary: Accept-Encoding,X-Forwarded-Proto,Cookie
    Last-Modified: Wed, 16 Jan 2013 22:26:03 GMT
    Location: http://en.wikipedia.org/wiki/France
    Content-Length: 0
    Content-Type: text/html; charset=utf-8
    X-Cache: MISS from sq64.wikimedia.org
    X-Cache-Lookup: HIT from sq64.wikimedia.org:3128
    Age: 45
    X-Cache: HIT from amssq32.esams.wikimedia.org
    X-Cache-Lookup: HIT from amssq32.esams.wikimedia.org:3128
    X-Cache: MISS from amssq35.esams.wikimedia.org
    X-Cache-Lookup: MISS from amssq35.esams.wikimedia.org:80
    Connection: close

私はwgetで試しました:

    wget.exe http://en.wikipedia.org/wiki/france   

そして大丈夫です!ページが読み込まれます:

    wget.exe http://en.wikipedia.org/wiki/france
    --2013-01-18 00:43:06--  http://en.wikipedia.org/wiki/france
    Resolving en.wikipedia.org... 91.198.174.225
    Connecting to en.wikipedia.org|91.198.174.225|:80... connected.
    HTTP request sent, awaiting response... 301 Moved Permanently
    Location: http://en.wikipedia.org/wiki/France [following]
    --2013-01-18 00:43:06--  http://en.wikipedia.org/wiki/France
    Reusing existing connection to en.wikipedia.org:80.
    HTTP request sent, awaiting response... 200 OK
    Length: 854896 (835K) [text/html]
    Saving to: `France'

    100%[======================================>] 854,896      573K/s   in 1.5s

    2013-01-18 00:43:08 (573 KB/s) - `France' saved [854896/854896]

では、私のプログラムの何が悪いのでしょうか?

4

2 に答える 2

1

ロケーション ヘッダーは、新しいアドレスが表示される場所です。この場合、「リダイレクトが多すぎます」というエラーであきらめるまで Web ブラウザが再読み込みを試行し続ける原因と同じです。

上記で使用した URL を使用すると、200 が返されます。を使用するwget --server-response http://wikipedia.org/wiki/Franceと、興味深い点は次のとおりです。

wget --server-response http://wikipedia.org/wiki/France
--2013-01-16 18:10:59--  http://wikipedia.org/wiki/France
Resolving wikipedia.org... 208.80.152.201, 2620:0:860:ed1a::1
Connecting to wikipedia.org|208.80.152.201|:80... connected.
HTTP request sent, awaiting response... 
  HTTP/1.0 301 Moved Permanently
  Date: Wed, 16 Jan 2013 23:10:59 GMT
  Server: Apache
  Location: http://www.wikipedia.org/wiki/France
  Content-Length: 244
  Content-Type: text/html; charset=iso-8859-1
  X-Pad: avoid browser bug
  X-Cache: MISS from sq65.wikimedia.org
  X-Cache-Lookup: MISS from sq65.wikimedia.org:3128
  X-Cache: MISS from sq64.wikimedia.org
  X-Cache-Lookup: MISS from sq64.wikimedia.org:80
  Connection: keep-alive
Location: http://www.wikipedia.org/wiki/France [following]
--2013-01-16 18:10:59--  http://www.wikipedia.org/wiki/France
Resolving www.wikipedia.org... 208.80.154.225, 2620:0:861:ed1a::1
Connecting to www.wikipedia.org|208.80.154.225|:80... connected.
HTTP request sent, awaiting response... 
  HTTP/1.0 301 Moved Permanently
  Date: Wed, 16 Jan 2013 23:11:00 GMT
  Server: Apache
  Location: http://en.wikipedia.org/wiki/France
  Content-Length: 243
  Content-Type: text/html; charset=iso-8859-1
  X-Cache: MISS from cp1019.eqiad.wmnet
  X-Cache-Lookup: MISS from cp1019.eqiad.wmnet:3128
  X-Cache: MISS from cp1018.eqiad.wmnet
  X-Cache-Lookup: MISS from cp1018.eqiad.wmnet:80
  Connection: keep-alive
Location: http://en.wikipedia.org/wiki/France [following]
--2013-01-16 18:11:00--  http://en.wikipedia.org/wiki/France
Resolving en.wikipedia.org... 208.80.154.225, 2620:0:861:ed1a::1
Reusing existing connection to www.wikipedia.org:80.
HTTP request sent, awaiting response... 
  HTTP/1.0 200 OK

ご覧のとおり、wget は wikipedia.org から www.wikipedia.org へ、そして最後に en.wikipedia.org へのリダイレクトに従っています。URL を再確認し、www.wikipedia.org を使用していないことを確認いたします。そうでない場合は、サーバーで一時的なエラーが発生したに違いありません。

于 2013-01-16T23:08:35.373 に答える
0

問題は、私のプログラムが内部的に指定されたアドレスを小文字に変更したことでした。これにより、301 応答に従って必要とされる大文字の「F」ではなく、小文字の「f」を使用した「フランス」とのリンクが作成されました。

URL は大文字と小文字を区別しないと思っていましたが、次のことがわかりました。

「ドメイン名は大文字と小文字を区別しませんが、残りの URL は大文字と小文字を区別する可能性があります」(http://www.wisegeek.com/are-urls-case-sensitive.htm)

于 2013-01-17T23:07:21.850 に答える