问题标签 [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 投票
2 回答
1569 浏览

nginx - Prerender 无法使用 Nginx 在 https 上工作

我在 Nginx 上运行的应用程序中包含 prerender 时遇到问题,我已经定义了一个简单的规则,用于将所有 http 请求重写为 https ,但是 prerender 在 GoDaddy 证书上运行 https 时遇到了一些问题,它会缓存页面但内容是空白的。我已经在 http 上对其进行了测试,它工作正常,我现在正在尝试的是,如果我http_user_agent是 Prerender,我想保持 http url 完整,否则将 url 重写为 https。

欢迎任何帮助/意见/建议。

0 投票
1 回答
1244 浏览

asp.net-mvc - prerender.io 的问题总是为客户端路由列表呈现默认角度路由

只想说我真的很喜欢 prerender.io,但我目前遇到了问题,我想知道我是否做错了什么,有更多服务经验的人可以帮助我。

我对 prerender.io 站点以及我设置的用于本地执行的 prerender 的 Debian Linux 机器也有同样的问题。

我的新站点是 ASP.Net MVC 和 angular 的混合体,其中 angular 表示服务器上 MVC 路由中的工作流(或内容类别)。

内容类别的示例如下:

MVC 服务器端路由是:

#!/news#!/welcome是 Angular 应用程序路由,welcome 也是默认路由

当我将我的 URL 发送到 prerender.io 服务或我的本地实例时:

预渲染服务只会渲染:

并在 #! 之后忽略客户端路由

因此,对于每个 MVC 路由的所有页面,我只是获得了多次呈现的默认路由......

这是 prerender.io 的错误吗?还是我没有正确配置的东西?

我确实有:

如果这很重要,请在我所有页面的头部。

0 投票
1 回答
1928 浏览

javascript - Facebook 共享器和 prerender.io(在 angularjs 应用程序中)

我刚刚在我的 tomcat 服务器中设置了 prerender.io middlewave(运行一些 java webservices 和一个 angularjs 应用程序)。

该服务(prerender)正常工作,我可以看到添加到列表中的页面(当我向用户代理发送模拟请求时)。

我的问题是 Facebook 分享按钮(来自 addthis)。

基本上,如果我访问一个尚未缓存的页面并单击“在 Facebook 上共享”按钮,它将向我显示 angularjs 模板,而不是“渲染”的模板。

奇怪的是,我可以在 Prerender.io 管理员上看到该页面。

这就像它太慢并且超时。我仍然不知道它是如何获得页面的非缓存版本的。

在第一次错误调用 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() 从服务器检索

我还使用在我的 EC2 实例(端口 3000)上运行的 prerender.io 服务器,以便完美地抓取我的 javascript 页面。

Prerender 工作正常,因为当我输入

我得到了页面的快照,当我显示这个页面的代码源时,我得到了正确的数据。

我的问题是当我在 Facebook 上分享这个网址时

我没有得到一个很好的图片、标题和描述链接,而是得到了这个糟糕的链接

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

0 投票
1 回答
8164 浏览

javascript - 如何检查 prerender.io 在我的 angularjs 网站上是否正常工作?

我遵循了本教程: http ://www.ng-newsletter.com/posts/serious-angular-seo.html

而且我正在使用从这里修改过的 apache conf(原来没有用,我更改了 HTTP_USER_AGENT 位) https://gist.github.com/thoop/8072354

现在我的 .htaccess 文件看起来像这样

但是,如果我像prerender.io上推荐的那样使用转义片段进行测试,似乎什么也没有发生。您可以检查自己:http ://vivule.ee/?_escaped_fragment_=或http://vivule.ee/0/?_escaped_fragment_=

如果我尝试使用 facebook 分享功能,它仍然会得到没有被 angular 脚本修改的 html。(尝试使用此工具:https ://developers.facebook.com/tools/debug/og/object/获取最新数据,但无济于事)。

任何想法如何测试预渲染是否有效?

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 应用程序连接起来。我有身份验证事件侦听器导致 laravel 创建一个允许论坛和应用程序共享身份验证详细信息的 php 会话(除了内置的 laravel 会话)。在访问论坛时,如果用户未登录 - 但存在此共享信息(即用户已登录 laravel 应用程序),论坛将使用会话中可用的信息登录该用户。

在大多数情况下,这工作得很好,除了 Chrome 预取似乎会破坏一些东西。如果我使用调试器监控论坛,我可以看到,当我输入论坛 url 但在我点击 enter 之前,chrome 将访问论坛。通过调试器,我可以看到它完成了它需要做的所有事情并成功登录。作为最后一步,论坛重新生成会话 ID 以停止劫持。这就是它崩溃的地方。看起来 chrome 忽略了新的会话 ID(通过 http SetCookie 标头发送),因此当我按 Enter 键时,我会使用原始会话 ID 进入论坛(并发出一个全新的请求)。这个 id 不存在,所以我设置了一个新的,因此失去了我的登录状态。对于用户来说,这看起来就像他们从未登录过。

我在谷歌上搜索了很多关于如何解决这个问题的建议。我不愿意删除会话 ID 重新生成,因为它确实服务于安全目的。我也无法禁用 chrome 预取/渲染。总而言之,我似乎有点苦恼。

我创建了一些复制此代码的代码。虽然它依赖于预渲染(因此您需要通过地址栏多次点击每个文件)

访问 test1.php,然后访问 test2.php,您应该会看到一堆会话变量输出。一旦预渲染/获取开始,您就会开始收到一条损坏的消息。

如果您可以将它连接到 IDE 中的 xdebug 或其他东西,您应该会看到隐藏的 prerender 命中 test2.php (在响应中看起来是绝对正确的),然后当您按下回车键时,随后的实际命中忘记了谁你是。

0 投票
0 回答
2078 浏览

facebook - 让 prerender.io 与 Facebook 爬虫(maven、GAE)一起工作?

我有一个 angularjs 应用程序,我想在 Facebook 上共享页面。这是使用元标记(https://developers.facebook.com/docs/sharing/best-practices)处理的,但我不能用 js 更改元标记,因为 js 不是由 Facebook 的爬虫执行的。因此,我想在爬虫从服务器获取页面之前使用 prerender.io 来执行和呈现我的页面。

问题是我不确定我是否正确理解了文档(https://github.com/greengerong/prerender-java)。

这是来自 GitHub 上的 README.md 的示例 web.xml:

经过一系列尝试使事情正确后,我发现如果我只是删除这部分:

我不必在 GAE 中处理 websockets(这给了我这个错误:'Caused by: java.net.SocketException: Permission denied: ...'),我可以使用已经部署在http://的默认值prerender.herokuapp.com问题 1) 使用默认服务与部署我自己的服务有何优缺点?

现在该服务似乎正在运行,并且我没有收到服务器错误 - 太棒了!

如文档 ( https://github.com/greengerong/prerender-java ) 中所述,我首先使用“我”作为用户爬虫代理。当使用“我”作为爬虫代理时,预渲染开始缓存我自己的 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 的问题。如果我在本地主机上使用 node/express,它工作得很好,但是当我试图让它在谷歌应用程序引擎上使用 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 我有以下内容:

我认为这是应用引擎服务器或中间件安装的问题,因为它与 node/express 配合得很好。

我需要重写一些东西来让应用引擎处理 hashbangs (#!) 还是什么?

这是我的 web.xml:

0 投票
0 回答
441 浏览

facebook - Facebook sharer.php AngularJS Prerender IO 问题

这是从 AngularJS / Prerender.io 应用程序共享 url 的问题。我想知道这是否可能是由于网址太长的原因?

我正在创建共享,所以它看起来像这样: https ://www.facebook.com/sharer/sharer.php?u=http%3A%2F%2Fwww.nowness.airnauts.com%2Fseries%2Fin-residence-architecture -design-video-series%2Fin-residence-ricardo-bofill-nowness

一个链接不起作用。Facebook 的解析器没有获取页面标题、og:title 等。

所有其他链接都正常工作,示例:

https://www.facebook.com/sharer/sharer.php?u=http%3A%2F%2Fwww.nowness.airnauts.com%2Fseries%2Fin-residence-architecture-design-video-series https://www .facebook.com/sharer/sharer.php?u=http%3A%2F%2Fwww.nowness.airnauts.com%2Fseries

甚至这一个,导致相同的内容: https ://www.facebook.com/sharer/sharer.php?u=http%3A%2F%2Fwww.nowness.airnauts.com%2Fstory%2Fin-residence- ricardo-bofill-nowness

该页面由 prerender.io 正确呈现: https ://s3.amazonaws.com/prerender/2361/http%3A%2F%2Fwww.nowness.airnauts.com%2Fseries%2Fin-residence-architecture-design-video-系列%2Fin-residence-ricardo-bofill-nowness

该问题也在 facebook 错误https://developers.facebook.com/bugs/1478457142420355/上进行了描述