【问题标题】:CORS: Have Facebook enabled CORS for all of its pictures?CORS:Facebook 是否为其所有图片启用了 CORS?
【发布时间】:2014-03-11 04:03:02
【问题描述】:

我在某处读到 Facebook 已为个人资料图片启用了交叉功能。我不确定专辑和其他东西,但实际上 Facebook 在我测试过的每个 URL 上都包含标题 Access-Control-Allow-Origin: *

我已经尝试过标准的个人资料图片 URL

https://graph.facebook.com/PROFILE_ID/picture?width=25&height=25 

还有 Akamai 网址:

https://fbcdn-sphotos-h-a.akamaihd.net/hphotos-ak-ash3/... 

(后者由https://graph.facebook.com/PROFILE_ID/photos返回)


我的应用基本上是在做以下事情:

var img = new Image;
img.src = "https://fbcdn-sphotos-h-a.akamaihd.net/hphotos-ak-ash3/...";
img.crossOrigin = "Anonymous";

img.onload = function() {
  ctx.drawImage(img, x, y);
}

// Above code will be repeated several times
// And mixed with code that manipulates ctx 

// Finally generetes data 
var generatedImage = canvas.toDataURL();
// And post if back to Facebook

我的代码似乎一切正常(在所有主要浏览器上测试),但有很多用户在将画布内容上传回 Facebook 时报告间歇性错误。 不幸的是,我还无法让精通技术的用户报告带有正确错误描述的内容。现在我无法重现问题(甚至无法知道问题所在)。

到目前为止,我所知道的是,通过编写服务器端代理来提供 Facebook 图像,就好像它们是本地的一样,错误显然消失了,所以,在我开始深入研究奇怪的跨浏览器问题之前,这让我想知道,神秘OAuthException: An unknown error has occurred.、受污染的cavas等错误消息,我首先要回到基础:

是否为通过 Graph API 公开的每张图片启用了 CORS? (官方文档或可靠来源的链接会很好)。

【问题讨论】:

标签: html facebook-graph-api canvas cors


【解决方案1】:

再次回答我自己的问题。

显然,通过 Graph API 公开的每张图片都启用了 CORS。他们都以Access-Control-Allow-Origin: *返回。

似乎有些浏览器不能很好地处理 crossorigin='anonymous' 和 CORS 标头,因此,目前,代理服务仍然是安全的选择。

【讨论】:

  • 你知道哪些浏览器不支持跨域图像绘制到画布然后数据拉出吗?
猜你喜欢
  • 2020-04-29
  • 2019-12-28
  • 2017-12-24
  • 2012-10-06
  • 2019-03-01
  • 2014-09-11
  • 1970-01-01
  • 2020-09-13
  • 1970-01-01
相关资源
最近更新 更多