1

このサイトに投稿するのは初めてですが、頻繁にアクセスしています。私は楽しみのためにコーディングしているプロジェクトに行き詰まっています。私はPerlの初心者なので、気楽にやってください。Perl で Web サーバーを作成することに成功しました。これは PHP を解析し、複数の接続を処理します。

ここまでは順調ですが、ブラウザに Cookie を送信することに行き詰まっています。

Cookie を送信する前に、サーバーがドキュメント出力 (ファイルの読み取りから HTTP 経由での送信) を解析する方法を理解していないと思います。私は何日も探しましたが、空っぽになりました。おそらく私はこれを過度に複雑にしていますが、ドキュメントが送信を要求しているキー値をどのように知ることができるのでしょうか?

HTTP::Cookies私が探しているものではない、ウェブからのドキュメントを解析するランドページのみを検索します。ヘッダーを送信する前に、サーバー側で "Set-Cookie:" のローカル ドキュメントを解析するとどうなりますか?

試してみましHTTP::Cookies->extract_cookies($my_local_file)たが、次のように応答します

「パッケージ経由でオブジェクト メソッド "_header" が見つかりません...」

サーバー側で発生したため、ヘッダーファイルが送信されなかったため、これは理にかなっています。

4

2 に答える 2

2

Cookie の仕組みを誤解しています。それらはサーバーによって指定され、クライアントに保存されるため、この質問は意味がありません

Cookie を送信する前に、サーバーがドキュメント出力 (ファイルの読み取りから HTTP 経由での送信) を解析する方法を理解していないと思います。

おそらく私はこれを過度に複雑にしていますが、ドキュメントが送信を要求しているキー値をどのように知ることができるのでしょうか?

ヘッダーを送信する前に、サーバー側で "Set-Cookie:" のローカル ドキュメントを解析するとどうなりますか?

サーバーは「Cookie を送信」し​​ません。サーバーは、クライアントから HTTP 要求を受信すると、クライアントが要求した情報を含む応答を作成して送信します。その応答にはSet-Cookie、クライアントに情報を保存するように指示するヘッダーが含まれている場合があります

ドキュメントはキー値の「送信を要求」できません— それは単なるドキュメントです! — そして「ローカル ドキュメントの解析」はありません。サーバーは、クライアントが別の要求を同じホストに送信した場合に返されるデータを定義するヘッダーを追加するだけです

要件が単純な場合は、各データ項目をヘッダーに表示できます。例えば

Set-Cookie: localtime=2016-05-18T09:01:16
Set-Cookie: username=Keith

しかし、サーバーがセッションに関連する多くの情報 (ショッピング バスケットの内容など) を保存したい場合、これは単純に、サーバーに保持されているすべての情報を含む MySQL データベース レコードの ID に対応するセッション ID である可能性があります。関連データ

Set-Cookie: session_id=76151387

この方法では、セッション ID のみが HTTP メッセージに表示され、実際のデータはすべてサーバー上のサイト外に保持されるため、セキュリティも向上します。

クライアントが応答を受信すると、好きな方法で Cookie を保存し、次の要求が同じホスト アドレスに送信された場合にそれらを取得して返すことができるようにします。次のように、前の応答からのデータのコピーを含めるだけです。

Cookie: localtime=2016-05-18T09:01:16; username=Keith

また

Cookie: session_id=76151387

この基本的な考え方にはバリエーションがあります。たとえば、サーバーは、Cookie がクライアントによって削除されるタイミングを指定するExpiresまたはフィールドを指定する場合があります。Max-Ageサーバーが送信するとします。

Set-Cookie: session_id=76151387; Max-Age=86400

その後、Cookie はディスクに保存されるため、ブラウザを再起動しても保持され、1 日後に削除されます (経過時間は秒単位で指定されます)。これらの属性のいずれかがない場合、Cookie はセッション Cookieであり、通常はメモリに保持され、ブラウザーを閉じると削除されます。

サーバーが指定できるその他のより難解な属性があります。RFC 6265は、HTTP Cookie システムの決定的な仕様であり、あらゆる側面を詳細に説明しています。

于 2016-05-18T08:12:27.780 に答える
0

ブラウザーが Web サーバーに要求を送信すると、ヘッダーに Cookie 行が含まれる場合があります。これは、Web リクエストとともに Cookie を Web サーバーに提示する Web ブラウザーです。リクエストは次のようになります。

GET /index.html HTTP/1.1
Host: YourURL.com
Cookie: key=value; key=value; key=value

サーバーへの生のリクエストを解析している場合は、cookie 行から値を解析します。

HTTP::Server::Simpleは、車輪を再発明したくない場合に、完全に機能する Web サーバーを提供するドロップイン CPAN ライブラリです。

于 2016-05-18T04:01:45.350 に答える