Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ajax 单页应用程序和开放图形_Ajax_Facebook_Facebook Opengraph_Underscore.js_Single Page Application - Fatal编程技术网

Ajax 单页应用程序和开放图形

Ajax 单页应用程序和开放图形,ajax,facebook,facebook-opengraph,underscore.js,single-page-application,Ajax,Facebook,Facebook Opengraph,Underscore.js,Single Page Application,我正在编写一个使用下划线模板的SPA。该应用程序搜索音乐专辑并对其进行评级,并通过ajax返回结果。如果facebook open graph metatags无法动态更改,并且无论搜索结果如何,页面的url都是恒定的,那么我如何才能让用户分享他们对某个相册的评价 (工业工程) 并更新这些属性以反映给定的搜索结果。我处理这一问题的方法是创建一个动态页面,我将其用作打开的图形对象,该页面仅从url参数填充,并使用元重定向重定向回SPA 多亏了本教程,我找到了一个解决方案: 如果http请求的用

我正在编写一个使用下划线模板的SPA。该应用程序搜索音乐专辑并对其进行评级,并通过ajax返回结果。如果facebook open graph metatags无法动态更改,并且无论搜索结果如何,页面的url都是恒定的,那么我如何才能让用户分享他们对某个相册的评价

(工业工程)



并更新这些属性以反映给定的搜索结果。

我处理这一问题的方法是创建一个动态页面,我将其用作打开的图形对象,该页面仅从url参数填充,并使用元重定向重定向回SPA


多亏了本教程,我找到了一个解决方案:

如果http请求的
用户代理
包含“facebookexternalhit”,我只发送元标记

下面是使用node和express的后端的一些代码:

app.get('/', (req,res) => {
  if(req.header('user-agent').includes('facebookexternalhit'){
    res.send(`
      <meta property="og:title" content="The Slits' Cut" />
    `);
  } else {
    res.sendFile(index.html);
  }  
})
app.get('/',(req,res)=>{
if(请求标头('user-agent')。包括('facebookexternalhit')){
res.send(`
`);
}否则{
res.sendFile(index.html);
}  
})

您也可以为此编写自己的中间件。

通过创建一个单独的OpenGraph控制器解决了这个问题,该控制器将由FB.api调用rates指向。该控制器返回一个html页面,其中包含OG元标记,这些标记由标题、图像等组成的模型填充。@AesopWaits,您愿意共享该解决方案吗?我是r在SPA上运行的不同“页面”需要不同的OG标签。尝试了这个方法,但facebook也遵循了重定向,所以当用户代理没有以“facebookexternalhit”开头时,我在服务器上从后端链接重定向到前端链接。
app.get('/', (req,res) => {
  if(req.header('user-agent').includes('facebookexternalhit'){
    res.send(`
      <meta property="og:title" content="The Slits' Cut" />
    `);
  } else {
    res.sendFile(index.html);
  }  
})