問題タブ [prerender]

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.

0 投票する
1 に答える
1928 参照

javascript - Facebook シェアラーと prerender.io (angularjs アプリ内)

prerender.io middlewave を tomcat サーバーにセットアップしました (いくつかの Java Web サービスと angularjs アプリを実行しています)。

サービス (prerender) は正常に動作し、ページがリストに追加されていることがわかります (ユーザー エージェントにリクエスト シミュレーションを送信した場合も同様です)。

私の問題は、Facebook の共有ボタン (addthis から) にあります。

基本的に、まだキャッシュされていないページにアクセスして「Facebook で共有」ボタンをクリックすると、「レンダリングされた」テンプレートではなく、angularjs テンプレートが表示されます。

奇妙なことに、Prerender.io admin でそのページを見ることができます。

遅すぎてタイムアウトしたようなものです。それでも、キャッシュされていないバージョンのページを取得する方法がわかりません。

最初の間違った呼び出しの後、Facebook はページをキャッシュするため、Facebook オブジェクト デバッガー ( https://developers.facebook.com/tools/debug/og/object )から手動で更新しないと、間違ったページが FB にキャッシュされたままになります。 FB キャッシュが更新されるまでサーバー。

とにかく、これを修正する方法について何か提案はありますか?

すべてのページを事前にキャッシュすることはできますが、新しいページを処理する必要があり、良い解決策ではないと思います。

ありがとう、デム

0 投票する
2 に答える
3758 参照

javascript - Facebook は、AngularJS によって開発されたページで動的 og タグを読み取ることができません

私は MEAN スタック アプリケーション (Mongo、Express、Angular、Node) を開発しています。Facebook の楽しいページでいくつかのページを共有し、このようなパーソナライズされたリンクを作成したいと考えています。 https://www.evernote.com/shard/s414/sh/6c61c036-abc6-4eb9-b355-41af05760979/45fce4c1795580266f1247dba3452d62/res/31e7a3bd-7258-4910-bb05-5e2e61cd2d96/skitch.png

動的 og タグを使用して、共有リンクにさまざまなデータを表示しています

これらの変数は、$http.get() によってサーバーから取得されます。

JavaScript ページを完全にクロールできるようにするために、EC2 インスタンス (ポート 3000) で実行されている prerender.io サーバーも使用しています。

私がタイプするとき、プリレンダーはうまくいっています

ページのスナップショットを取得し、このページのコード ソースを表示すると、正しいデータが取得されます。

私の問題は、FacebookでこのURLを共有するときです

画像、タイトル、説明を含む適切なリンクを取得する代わりに、この不適切なリンクを取得します

https://www.evernote.com/shard/s414/sh/ac398446-276e-46ae-bc1e-eab5fea5cc31/ac5339dc23b07ccaa853a0b9e86d4c4c/res/c99109cc-d038-4837-a303-dbb5f7ad376c/skitch.png

0 投票する
0 に答える
1240 参照

node.js - prerender.io と node.js レンダリングの空白ページ

prerender.io と node.js のセットアップ方法がわかりません。prerender.ioでは、追加するように言われています

アプリ内。

私のコードは次のようになります。

http: //192.168.xx :3000/http://myangularjswebsite.com/?_escaped_fragment_にアクセスすると、読み込みに数秒かかり、空白のページが表示されます。

助言がありますか?

0 投票する
1 に答える
816 参照

php - session_regenerate_id と Chrome のプリフェッチ/レンダリングの問題

一部のセッション機能と、Chrome のプリフェッチ/レンダリングの方法に問題があります。フォーラム ソフトウェア (esoTalk) をカスタム laravel 4.3 アプリと接続しようとしています。フォーラムとアプリが認証の詳細を共有できるようにするphpセッション(組み込みのlaravelセッションに加えて)をlaravelに作成させる認証イベントリスナーがあります。フォーラムへのアクセス時に、ユーザーがログインしていなくても、この共有情報が存在する (ユーザーが laravel アプリにログインしている) 場合、フォーラムはセッションで利用可能な情報を使用してそのユーザーをログインさせます。

ほとんどの場合、これは正常に機能しますが、Chrome のプリフェッチが問題を引き起こしているようです。デバッガーを使用してフォーラムを監視すると、フォーラムの URL を入力すると、クロムを入力する前にフォーラムにアクセスできることがわかります。デバッガーを実行すると、必要なすべての処理が実行され、ログインに成功したことがわかります。最後のステップとして、フォーラムはセッション ID を再生成してハイジャックを停止します。これが壊れるところです。Chrome は新しいセッション ID (http SetCookie ヘッダー経由で送信) を無視するように見えるので、Enter キーを押すと、元のセッション ID を使用してフォーラムに移動します (そしてまったく新しい要求を行います)。この ID は存在しないため、新しい ID を設定すると、ログイン状態が失われます。ユーザーにとって、これはログインしていないように見えます。

これを回避する方法についての提案を求めて、高低をグーグルで検索しました。セッション ID の再生成を削除するのは、セキュリティ上の目的に役立つため、私は嫌です。また、クロムのプリフェッチ/レンダリングを無効にすることもできません。全体として、私は少しピクルスになっているようです。

これを再現するコードをいくつか作成しました。ただし、事前レンダリングの開始に依存しています (そのため、アドレス バーから各ファイルに何度もアクセスする必要があります)。

test1.php に続いて test2.php にアクセスすると、一連のセッション変数の出力が表示されます。プリレンダリング/フェッチが開始されるとすぐに、壊れたメッセージが表示され始めます。

IDE などで xdebug に接続できる場合は、隠し prerender が test2.php にヒットし (これは応答で完全に正しいように見えます)、Enter キーを押すと、その後の実際のヒットが表示されます。あなたは。

0 投票する
0 に答える
2078 参照

facebook - prerender.io を Facebook クローラー (maven、GAE) と連携させるには?

Facebookでページを共有したいAngularjsアプリケーションがあります。これはメタ タグ ( https://developers.facebook.com/docs/sharing/best-practices ) で処理されますが、js は Facebook のクローラーによって実行されないため、js でメタ タグを変更することはできません。したがって、クローラーがサーバーからページを取得する前に、 prerender.io を使用してページを実行およびレンダリングしたいと考えています。

ドキュメントを正しく理解しているかどうかはわかりません ( https://github.com/greengerong/prerender-java )。

これは、GitHub の README.md からの web.xml の例です。

物事を正しくしようと何度も試みた後、この部分を単純に削除すると、次のことがわかりました。

GAE で Websocket を処理する必要はありません (これにより、次のエラーが発生しました:「Caused by: java.net.SocketException: Permission denied: ...」)。また、http://に既にデプロイされているデフォルトを使用できます。 prerender.herokuapp.com . 質問 1) デフォルト サービスを使用する場合と独自のサービスをデプロイする場合の長所と短所は何ですか?

現在、サービスは機能しているようで、サーバー エラーは発生しません。すばらしいです。

ドキュメント ( https://github.com/greengerong/prerender-java ) で説明されているように、最初に「me」をユーザー クローラー エージェントとして使用しました。「me」をクローラー エージェントとして使用すると、prerender が独自の API 呼び出しをキャッシュし始めました。たとえば、サーバーから大量のアイテムを取得していたとき、prerender は HTML を返し、必要な JSON で URI をキャッシュしました。だから今、私は prerender.io にキャッシュされたページをいくつか持っていますが、キャッシュしたいページではありません:)。

そこで、crawlerUserAgent を次のように変更しました。

(facebookexternalhit、FacebookUserExternalHit なども試しました)。現在、prerender.io にキャッシュされたページを取得しておらず、Facebook のクローラーがページを取得する前に JavaScript が実行されていません。デバッガー ( https://developers.facebook.com/tools/debug/og/object/ ) を見ると、クローラーは元のメタ タグのみを認識し、js に置き換えたメタ タグは認識していないことがわかります。さまざまなページで(ページを開いて要素を調べると、メタタグが置き換えられます)。

質問 2) 私はこれを正しく行っていますか? 他のクローラー ユーザー エージェントを試す必要がありますか? facebookexternalhit は正しいですか?

0 投票する
0 に答える
517 参照

angularjs - Prerender io Java 間違ったルート

prerender.io に問題があります。localhost で node/express を使用している場合は問題なく動作しますが、Google アプリ エンジンで Java ( https://github.com/greengerong/prerender-java/ )で動作させようとすると、自動的に再ルーティングされます.

これをブラウザに書き込んで Enter キーを押すと、 http://www.example.com/?_escaped_fragment_=/browse/761238167868/

http://www.example.com/?_escaped_fragment_=/browse/761238167868#!/browseに自動的にリダイレクトされ ます

app.js には次のものがあります。

ノード/エクスプレスで問題なく動作するため、アプリエンジンサーバーまたはミドルウェアのインストールに問題があると思います。

アプリ エンジンがハッシュバング (#!) などを処理するように何かを書き直す必要がありますか?

これが私のweb.xmlです: