angular.js是否可以通过模板加载第三方内容?

时间:2014-01-22 12:09:46

标签: angularjs templates http-headers httprequest

我正在使用angular创建一个网站,但我要求将第三方内容嵌入到模板中,或者更确切地说,将其嵌入到通常为模板的页面中,除非我从第三方获取内容。在这种情况下,它是来自Podio的表格。

Podio允许您嵌入内容,并且通常提供这样的脚本。

<!-- BEGIN Podio web form -->
<script src="https://podio.com/webforms/nnnnnnn/nnnnnnn.js"></script>
<script type="text/javascript">
  _podioWebForm.render("nnnnnn")
</script>
<!-- END Podio web form -->

但是,这会嵌入一个我不想要的iFrame,也不会起作用,因为(我认为)Angular在加载模板时不会解析脚本标记。 (如果有人能证实这一点,我会感兴趣,虽然这不是问题的主题)。

如果我访问的话,我只想要纯粹的形式:

https://podio.com/webforms/nnnnnnn/nnnnnnn/.

我试图用这个替换模板的URL,当然还会启动一个跨域的http请求,除了它不允许没有No 'Access-Control-Allow-Origin' header的跨域请求时,它几乎可以工作。

我读到可以使用

$httpProvider.defaults.useXDomain = true;
delete $httpProvider.defaults.headers.common['X-Requested-With'];

我插入到我的.config但它似乎不起作用。我的问题基本上是,这个跨域调用是否可行,如果可以,我该如何使其工作?

1 个答案:

答案 0 :(得分:0)

  

我的问题基本上是,这个跨域调用是否可行,如果可以的话   我该如何使其发挥作用?

这取决于。跨域调用仅在服务器允许时才有效,如果服务器未配置为允许,则客户端无法发出正确的请求。有问题的服务器是否支持它?如果不是,您将需要添加它(如果您可以控制服务器),在SO上搜索Access-Control-Allow-Origin和服务器,有很多关于如何操作的指南。

但我认为您无法控制服务器,因此您可能遇到麻烦。您可以尝试使用jsonp获取它,但同样的事情去那里,服务器需要支持它。

最后一个选项是通过您控制的服务器进行代理。从服务器请求模板,让服务器从目标服务器读取它,然后向前提供服务。