なぜurllib2.urlopenは「http:// localhost/new-post#comment-29」のようなページを開けないのですか?

StackOverflow https://stackoverflow.com/questions/3798422

質問

私は興味があります、どうして私はこの行を実行している404エラーを取得します:

urllib2.urlopen("http://localhost/new-post#comment-29")

すべてがうまくいきますが、サーフィン http:// localhost/new-post#comment-29 ブラウザで...

Urlopenメソッドは、URLを「#」と解析しませんか?

誰かが知っていますか?

役に立ちましたか?

解決

HTTPプロトコルでは、フラグメント(から # 以降)はネットワーク全体でサーバーに送信されません。ブラウザによってローカルに保持され、サーバーの応答が完全に受信されると、「現在」と表示されるページの正確な場所を何らかの形で「視覚的に見つける」ように使用されます(たとえば、返されたページがHTMLにある場合、これはHTMLを解析し、最初の適切なものを探して行われます <a> 国旗)。

したがって、手順は次のとおりです。 urlparse.urlparse;残りを使用してリソースを取得します。サーバーの応答のコンテンツタイプのヘッダーに基づいて適切に解析します。次に、最初のステップで保持したフラグメントを解析されたリソース内に配置することに基づいて、リソースの「現在のスポット」に関してプログラムが行う視覚的アクションを実行します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top