Angularjs 使用Angular JS(类似facebook的链接共享模块)搜索网站的基本数据

Angularjs 使用Angular JS(类似facebook的链接共享模块)搜索网站的基本数据,angularjs,cors,Angularjs,Cors,我试图使Facebook的“链接共享”模块,即当任何人写一个链接,而做新的职位,它会自动显示一些基本数据从网站像在Facebook 我使用$http.get尝试了简单的刮取,只有在我在google Chrome中安装CORS扩展时,它才起作用,所以我使用这种方法面临的主要问题是使它在不使用任何插件的情况下工作 我还尝试在配置文件中添加标题,但仍然没有成功 $httpProvider.defaults.headers.common = {}; $httpProvider.defaults.head

我试图使Facebook的“链接共享”模块,即当任何人写一个链接,而做新的职位,它会自动显示一些基本数据从网站像在Facebook

我使用$http.get尝试了简单的刮取,只有在我在google Chrome中安装CORS扩展时,它才起作用,所以我使用这种方法面临的主要问题是使它在不使用任何插件的情况下工作

我还尝试在配置文件中添加标题,但仍然没有成功

$httpProvider.defaults.headers.common = {};
$httpProvider.defaults.headers.post = {};
$httpProvider.defaults.headers.put = {};
$httpProvider.defaults.headers.patch = {};
$httpProvider.defaults.useXDomain = true;
delete $httpProvider.defaults.headers.common['X-Requested-With'];
请与我分享实现此功能的最佳方法,或者是否有任何方法可以解决CORS问题

谢谢
泽山

这是不可能的。CORS的存在有一个原因:阻止您从其他域访问HTTP资源,而这些域不明确允许您访问

同样:由于浏览器施加的安全限制,这是不可能的

你能做到这一点的唯一方法,就像Facebook那样,就是将那些跨域请求移动到一个没有跨域限制的服务器上


因此,
$http.post(“/some script on my server”)
该脚本对远程页面执行实际的http请求,刮取必要的信息并将其返回到浏览器。

有一种解决方法,可以使浏览器只运行javascript解决方案,而不必在服务器中配置任何内容(在某些特定情况下可能有用)和“避免”COR

您可以使用。这样,您只需在他们的url中使用一点点,就可以刮取,并使用他们在您的网站中为您提供的查询作为您请求的url

例如(摘自YQL网站):

从yahoo finance获取标题,您还可以获取可在请求中使用的查询url:

https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url%3D'http%3A%2F%2Ffinance.yahoo.com%2Fq%3Fs%3Dyhoo'%20and%20xpath%3D'%2F%2Fdiv%5B%40id%3D%22yfi_headlines%22%5D%2Fdiv%5B2%5D%2Ful%2Fli%2Fa'&format=json&diagnostics=true&callback=
他们还有其他例子,以及如何将其集成到文档中

你不需要在服务器端配置任何东西,但当然,它必须通过Yahoo的,这根本不是最优的。当然,性能会受到直接影响


如前所述,也许在某些特定情况下(开发、测试等),这会很有用,尝试一下总是很有趣。

谢谢@Sergiu Parachiv的回答。我只是想知道谷歌扩展“CORS”是怎么来的使用相同的angular代码使其成为可能?因为该扩展禁用了CORS安全限制。您可能无法要求应用程序的用户安装它,而且大多数用户甚至不使用Chrome。
https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url%3D'http%3A%2F%2Ffinance.yahoo.com%2Fq%3Fs%3Dyhoo'%20and%20xpath%3D'%2F%2Fdiv%5B%40id%3D%22yfi_headlines%22%5D%2Fdiv%5B2%5D%2Ful%2Fli%2Fa'&format=json&diagnostics=true&callback=