我试图让Facebook像“链接共享”模块,即当有人在做新的POST时写一个链接时,它会自动显示来自网站的一些基本数据,如在facebook ...
我尝试使用$ http.get进行简单的报废,只有在谷歌chroome中安装CORS扩展才能正常工作,所以我面对这个方法的主要问题是让它在不使用任何插件的情况下工作...... < / p>
我也试过在配置文件中添加标题但仍然没有运气。
$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问题?
由于 泽山
答案 0 :(得分:2)
这是不可能的。 CORS的存在是有原因的:阻止您从其他域访问HTTP资源,而不会明确允许您使用其他域。
再次: 这是不可能的 ,因为浏览器施加了安全限制。
实现这一目标的唯一方法,以及Facebook的方式,就是将这些跨域请求移动到没有跨域限制的服务器。
所以$http.post('/some-script-on-my-server')
该脚本执行远程页面的实际HTTP请求,抓取必要的信息并将其返回给浏览器。
答案 1 :(得分:0)
有一个解决方法,为了拥有一个唯一的浏览器工作javascript解决方案,而无需在服务器中配置任何东西(可能在某些特定情况下有用)和&#34;避免&#34; CORS。
您可以使用YQL。这样您只需要在console中使用您需要删除的网址,并使用他们在您的网站中提供的查询作为您的请求的网址。
例如(从YQL网站中提取):
select * from html where url='http://finance.yahoo.com/q?s=yhoo' and xpath='//div[@id="yfi_headlines"]/div[2]/ul/li/a'
获取yahoo finance的头条新闻,您还可以获得可在请求中使用的查询网址:
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=
他们有其他示例以及如何将其集成到他们的文档中。
你不需要在服务器端配置任何东西,但当然,它必须经过雅虎,这根本不是最佳选择。当然,性能直接受到影响......
如上所述,也许在某些特定情况下(开发,测试等),这可能是有用的,尝试一下总是很有趣。