問題タブ [http-1.1]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
http - HTTP 1.0 対 1.1
HTTP 1.0 と HTTP 1.1 の違いを簡単に説明してくれませんか? 私は両方の RFC にしばらく時間を費やしましたが、それらの間の多くの違いを引き出すことができませんでした。ウィキペディアは次のように述べています。
HTTP/1.1 (1997-1999)
現行版; 永続的な接続はデフォルトで有効になっており、プロキシとうまく連携します。リクエストのパイプラインもサポートしているため、複数のリクエストを同時に送信できるため、サーバーはワークロードに備えて、リクエストされたリソースをより迅速にクライアントに転送できる可能性があります。
しかし、それは私にとってあまり意味がありません。これはやや複雑なテーマであることは承知しているため、完全な回答は期待できませんが、もう少し低いレベルでの違いの簡単な概要を教えてもらえますか?
つまり、HTTP サーバーまたはアプリケーションを実装するために知っておく必要がある情報を探しているということです。私は主に正しい方向へのナッジを探しているので、自分でそれを理解することができます.
http - HTTP要求/応答の名前
RFC 2616 ( "Hypertext Transfer Protocol --HTTP / 1.1")で見つけられなかったことが1つあります。それは、要求/応答ペアの「正規の」名前です。そんなことありますか?
これをテンプレートとして、次の文にどの単語を入れますか?
往復?サイクル?
c# - Web サービス .NET Framework の問題
C# (VS.Net 2003) アプリケーションから Web サービス (Java) を接続しています。HTTP 1.0 プロトコルで実行される Web サービス。一方、VS.Net 2003 は HTTP 1.1 プロトコルで到達しようとしています。したがって、オブジェクトは null 値になります。
たとえば、string[5] オブジェクトは正しく取得されていますが、配列の項目は null 値です。
HTTP プロトコルを 1.0 にする必要があります。2005 と 2008 では問題ありません。
VS 2003 フレームワーク 1.1 でこれを行うにはどうすればよいですか?
php - session_cache_limiter() および session_cache_expire() または複数の header() を使用する PHP
PHP ページをキャッシュしたい。キャッシュを許可するには、次を使用します。
私はこれらのキャッシュ ヘッダーにのみセッションを使用しているので、これらの 3 行を削除して、次のように置き換える必要があります ($_SESSION は使用していません)。
php - PHPでのHTTPif-none-matchおよびif-modified-sinceおよび304の説明
私の質問は、プロキシ/クライアント要求からif-none-matchとif-modified-sinceの両方を受け取ったときに、HTTP304「NotModified」に応答する方法についてです。
RFC 2616セクション14.26(http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.26)から:
エンティティタグのいずれも一致しない場合、サーバーは、If-None-Matchヘッダーフィールドが存在しないかのように要求されたメソッドを実行できますが、要求内のIf-Modified-Sinceヘッダーフィールドも無視する必要があります。つまり、一致するエンティティタグがない場合、サーバーは304(変更されていない)応答を返さないようにする必要があります。
この声明を理解するのはよくわかりません...
- PHPの「エンティティタグのいずれも一致しない場合」は、
$_SERVER['HTTP_IF_NONE_MATCH']
以前に送信したETagと比較して説明されていますか? - このステートメントを正しく理解していれば、リストされているETagのいずれも
$_SERVER['HTTP_IF_NONE_MATCH']
私のETagと一致しなくなるとすぐに、すべての検証を停止し、ページを正常に提供します。
誰でもこのRFC部分を擬似コード(またはPHPコード)に翻訳したり、上記の2つのポイントに答えたりすることができますか?
編集1: あなたの答えをありがとうSt.Woland。あなた(または他の誰か)は、私がこれらの6つの点について正しいかどうか教えてもらえますか?
の形式は次の
$_SERVER['HTTP_IF_NONE_MATCH']
いずれかになります。a)If-None-Match: "xyzzy"、 "r2d2xxxx"、 "c3piozzzz"
b)If-None-Match: "xyzzy"
ではありません:
c)If-None-Match: "xyzzy、r2d2xxxx、c3piozzzz"
の場合
!array_key_exists('HTTP_IF_NONE_MATCH', $_SERVER)
、anyTagMatched()はNULLを返します。ETagがドキュメントのETagと一致するとすぐに
$_SERVER['HTTP_IF_NONE_MATCH']
、anyTagMatched()はTRUEを返します。のEtagのどれも
$_SERVER['HTTP_IF_NONE_MATCH']
私のドキュメントETagと一致しない場合、anyTagMatched()
FALSEを返します。$_SERVER['HTTP_IF_MODIFIED_SINCE']
が設定されていて、ドキュメントの「最終更新日」と一致する場合はisExpired()
FALSEを返し、そうでない場合はTRUEを返します。TRUEを返すとすぐに
anyTagMatched()
、304を発行します。anyTagMatched()がNULLをisExpired()
返し、FALSEを返した場合、304を発行できます。それ以外の状況では、通常どおりページを提供します(最新のLast-ModifiedとETagヘッダー)。
http - HTTP ヘッダー If-None-Match: * は何を意味しますか?
次の HTTP 1.1 ヘッダーは何を意味しますか?
一致しない場合: *
強いまたは弱いETag、またはETagのリストを使用する場合は理解できますが、スター(*)を使用する場合の使用法はわかりません。
編集:「If-None-Match: *」にどのように/何を答えるかを示す擬似コード(PHPコードも良い)があればいいでしょう。
http - HTTP If-None-Match と If-Match の比較
私は現在、必要に応じて HTTP "304 Not Modified" に応答する PHP スクリプトを作成しています。
(これまでに行ったことについては、質問 #2086712を参照してください)。
現在、私は次のように答えています。
- If-Modified-Since
- 一致しない場合
しかし、さらに3つのヘッダーが「条件付きGET」をトリガーできることがわかりました(http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.3を参照):
- イフマッチ
- If-Unmodified-Since
- If-Range
最後の 2 つは、私のキャッシュ システムには無関係のようです (「大きな」ダウンロードを再開するときに使用されるようです) が、私のシステムで「If-Match」が使用できるかどうかはわかりません。
「If-Match」は、プロキシまたは Web ブラウザで「通常の」ページ コンテンツに使用されますか? 「If-Match」は「If-None-Match」とどう違うのですか?
これらの 3 つをサポートする必要がありますか、それとも一部だけをサポートする必要がありますか? どんな助けでも大歓迎です!
php - HTTP 100 のサポート PHP で続行
特定のクライアントからの大きな POST ファイルのアップロードを受け入れる PHP Web アプリケーションに取り組んでおり、ファイルが HTTP/1.1 100 を使用してアップロードされる前に、(サイズだけでなく、さまざまなヘッダーやその他の要因に基づいて) これらのアップロードを受け入れまたは拒否したいと考えています。継続する。
HTTP/1.1 仕様 8.2.3からのいくつかの簡単な背景:
100 (Continue) ステータス (セクション 10.1.1 を参照) の目的は、リクエスト本文を含むリクエスト メッセージを送信しているクライアントが、オリジン サーバーがリクエストを受け入れるかどうかを (リクエスト ヘッダーに基づいて) 判断できるようにすることです。クライアントがリクエストボディを送信する前。場合によっては、サーバーが本文を確認せずにメッセージを拒否する場合、クライアントが本文を送信することは不適切または非常に非効率的である可能性があります。
問題は、Apache がクライアントから Expect: 100-continue を認識し、PHP が処理を開始する前に 100 Continue を返し、ファイルのアップロードを受け入れることです...ただし、Expect: 100-continue の直後に処理を開始するには、PHP が必要です。これが可能かどうかわからないので、2つの質問があります。
- Expect: 100-continue の直後に PHP の処理を開始することは可能ですか?
- そうでない場合、良い代替手段は何ですか?
私は現在、クライアントが最初に POST と同じヘッダーを持つ HEAD リクエストを送信するように指定して、100 の継続をエミュレートすることを考えています。その後、webapp は、POST またはエラー コードを続行するための応答を返すことができます。他の提案は大歓迎です!
http - HTTP / 1.1用のオープンソースの機械可読文法?
HTTP / 1.1の要求と応答のためのオープンソースの機械可読文法はありますか?具体的には、人気のあるパーサジェネレーター(ANTLR、CUP、BNFCなど)の1つで受け入れられる文法を探しています。
php - PHPとApacheを使用してリクエストでHTTPのバージョンを確認するにはどうすればよいですか?
Apacheで実行されているPHPスクリプトで、HTTPリクエストがHTTP/1.0リクエストであるかHTTP/1.1リクエストであるかを判断する必要があります。この情報を照会する方法はありますか?