-1

課題として、HTML ファイルを処理するサーバーを作成しました。Web ブラウザーをテスト クライアントとして使用することになっています。また、存在しないファイルのリクエストがあった場合は、次の HTTP/1.1 404 Not Found\r\n\r\nものを送信する必要があり、他に問題が発生した場合は、

HTTP/1.1 500 Internal Server Error\r\n\r\n"

それらを送信するテストを実行しましたが、ブラウザ ウィンドウに何も表示されませんか? このようなリクエストを送信すると、視覚的なフィードバックを受け取る必要がありますか?

4

3 に答える 3

2

HTML 応答では、各行の後に CRLF (キャリッジ リターンとライン フィード) を 1 つだけ含める必要があります。したがって、最初に余分なものを削除できます\r\n

また、2 行目で、エラーを表示したい場合は、HTML 応答をクライアントに送信して、エラーの内容を伝えることができます。これは通常、デフォルトのエラー ページが定義されていない場合に、典型的な Web サーバーが行うことです。HTTP ヘッダーを送信しない場合は<h1> No page found</h1>、2 行目など、返信したい HTML 本文を挿入できます。

于 2013-03-29T00:53:58.500 に答える
0

http 応答に「エンティティ」を含めるには

HTTP/1.1 404 Not Found
Content-Type: text/html
Content-Length: 10

01234576789

各行は CRLF で終了します。Content-Length を正しくカウントしてください。

于 2013-03-29T01:05:27.133 に答える
0

これは学習課題であり、この方法でサーバーを実装するように言われた可能性があることを理解しています。しかし、それを念頭に置いて...


これは、Web サーバー/サービスを実装する間違った方法です。正しい方法は、既存の実装を見つけて、その上にサービスを構築することです。

  • Java EE Web コンテナーを使用できます。つまり、サーブレット仕様を実装するものです。
  • 非サーブレット フレームワーク (Grizzly など) を使用できます。
  • サーバー側の HTTP プロトコル スタックの上に構築できます。たとえば、HttpComponent ライブラリの Apache を使用します。

Web サーバーをゼロから構築するのは、適切に行うには大変な作業です。そして、それを適切に行わない可能性。つまり、HTTP 仕様でサーバーの動作が規定されている方法に従ってサービスを実装することはありません。あなたは物事を放置したり、物事を間違った方法で行ったりします。

しないでください。壊れた (つまり、準拠していない) Web サーバーがすでに多すぎます。これ以上は必要ありません。

また、HTTP をゼロから実装することに決めた場合は、HTTP 仕様を十分に読んで理解する必要があります。そして、あなた (YOU) は、ブラウザが仕様のクライアント側をどのように実装するかについて、独自の基本的な調査を行う必要があります。したがって、ブラウザを「正常に」動作させるには、サーバー側で何をする必要があります。

于 2013-03-29T02:08:26.800 に答える