問題タブ [esi]
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.
facebook - エッジ サイド インクルード (ESI) は Facebook の BigPipe のようなものですか?
Web アプリケーションのパフォーマンスに関心のある人なら誰でも、 Facebook の BigPipe の背後にある考え方を知っています。
最近、Symfony はfragment サブフレームワークと呼ばれる新しい機能をリリースしました。
この機能の背後にあるアイデアは、ESI 言語仕様 1.0として W3C に説明されている ESI テクノロジを使用することです。
私の質問は、Facebook の BigPipe は、この ESI テクノロジに何らかの形で関連していますか? ESI を使用して BigPipe のアイデアを実現できますか?
mobile - Symfony2 と varnish を使用しているタブレットやモバイル デバイスで ESI コンテンツがランダムに欠落している
Edge Side Include を介して含まれている一部のコンテンツがランダムに欠落しているという奇妙な問題があります。ヘッダータグでラップされたメニューです。ブラウザに表示されることもあれば、見つからないこともあります。
いくつかのメモ:
1) これは、モバイル デバイスとタブレット デバイスでのみ発生します。デフォルトのAndroidブラウザー、Firefox、およびAndroid用のChromeを使用して、iPad、Blackberry Torch、およびAndroidフォン(Samsung Galaxy s3)でエラーを再現できました。
2) デバッグ用に Android SDK をインストールしましたが、エラーは発生しませんでした。私が見つけた唯一のことは、ヘッダーが欠落しているたびに、奇妙な Cookie が設定されていなかったことです。そして、ヘッダーが表示されたときに、Cookie が設定されていました。
3) この問題は、ブラウザのすべての Web データ (Cookie、キャッシュなど) を消去することで解決できます。
アプリケーションは Symfony2.1 で書かれています リバース プロキシ サーバーは Varnish です
何か案は?
security - symfony2 のセキュリティ ESI の問題
Symfony2 (2.2)のESIでセキュリティの問題に直面しています:
私のアプリケーションの一部の ESI は、ログに記録する必要がなく、公開されていますが、他の ESI では、ユーザーがログに記録され、ロール ROLE_USER を持つ必要があります。
問題は、ナビゲーターのアドレスバーに URL を書き込むことで、すべての人が ESI を表示できることです...そのため、管理者の役割を必要とするアクション内で呼び出される ESI にアクセスできます。 !
たとえば、私の ESI "SybioWebsiteBundle:Controller:showEsiAction" は次の URL で読み取ることができます: http://mywebsiteurl.com/_proxy?_path=id%3D1%26slug%3Dlorem%26locale%3Dfr%26ranks%3D1-2-3 -5-6-7%26page%3D1%26isPhotograph%3D1%26_format%3Dhtml%26_controller%3DSybioWebsiteBundle%253AAlbum%253AshowEsi
この ESI は、ログに記録されたユーザーのみが表示できます。ユーザーは showAction に移動し、Twig テンプレート内でこの ESI が呼び出されます。
解決策を検索しましたが、非常に醜いものがあります。ユーザーが ESI アクションにログインしているかどうかを確認してください...問題ありませんが、HTTP キャッシュ検証を使用してサイトの読み込み (およびメモリ) を最適化しています。したがって、この解決策を選択した場合は、ユーザーの役割をテストする追加の ETag を追加して、ユーザーが ESI にアクセスするたびに ESI キャッシュをクリアし、空の応答を表示し、ログに記録された場合はそれをクリアする必要があります。再び、通常のビューなどを表示します...
チートをしたい人は珍しいので、それは満足のいく解決策になるかもしれません... 理論的には、幸運なことに、キャッシュが常にクリアされるわけではありません!
しかし、別の解決策があるかどうか知りたいですか?ありがとう !
varnish - Varnish ESI は異なる src パスを使用する必要がありますか?
1 つのページに 5 つの esi:include があり、各 src は「m.htm?p=1」や「m.htm?p=2」などの異なるパラメーターを持つ 1 つの同じパスですが、varnishlog を使用したところ、発生した esi リクエストは 1 つだけでした。複数の esi:include タグで同じパスを使用していませんか?
varnish - Varnish キャッシュされたリクエストを認証する
私はイントラネット スタイルのプライベート Web サイトを持っています。この Web サイトでは、コンテンツを表示する前に誰もがログインする必要があります。ログインすると、すべてのページが同じになります。そのため、これらのページを Varnish にキャッシュする必要がありますが、それでもユーザー アクセスを簡単にチェックできます。
そのため、これを行うことを考えていました。VCL ファイルに、受信した各要求を 1 つのファイルに書き換えるルールを作成します。このファイルはキャッシュされず、ユーザーが有効かどうかを確認します。有効な場合は、キャッシュされたページの esi インクルードを出力します。
これは、キャッシュされたページに対する 2 番目の要求が認証済みとして識別されることを除いて、すべて問題ありません。リクエストにクエリ文字列を追加して、それを確認することを考えていました。または、esi:include を介してリクエストが行われたかどうかを確認する方法があるかもしれません。おそらく私はこれに間違った方法でアプローチしていますか?
助言がありますか?
varnish - ワニスは外部ソースからのesiアクセスを防ぎます
私はワニスを稼働させており、すべてがうまく機能しています。
しかし、私はesi<esi:include src="/esi/cache/temp.phtml?id=1"/>
を使用していますが、うまく機能しますが、外部リソースがesiディレクトリにアクセスできないようにしたいと考えています。
今、私はreq.esi_level
. esiに直接アクセスする場合は0になり、そうでない場合はn + 1になります
これに関する唯一の問題は、バックエンドにヒットすることです.Varnish自体がesiディレクトリへのアクセスを防ぐことができると思います.
tl;drワニスを使用してesiディレクトリへの外部アクセスを防ぐにはどうすればよいですか
http - ニスと ESI HTTP AUTH
私はこの問題について非常に迷っており、どこに問題があるのか わからないので、あなたが私を助けてくれることを願っています.
私は symfony で HTTP BASIC 認証を行っており、Drupal ページのタグを使用して、この認証で保護されている URL にアクセスしようとしています。すべてのリクエストは Varnish に送信されます
そのようなURLでユーザー名とパスワードを指定します:
私のニス構成ファイルには、auth.http の次の行しかありません。
Symfony のバックエンドは、http 認証なしでうまく機能しており、Varnish と esi タグがない場合でも http 認証はうまく機能しています。
誰かが問題のアイデアを持っている場合は、間違っていても教えてください =)