似乎大多数(如果不是全部的话)oEmbed提供程序端点都没有启用CORS。这意味着我必须使用JSONP(对于那些支持它的)或通过服务器代理来使用oEmbed。
有一项公司政策反对使用来自第三方提供商的JSONP,但我仍然希望以纯粹的客户端方式利用oEmbed(对于我们信任的某些提供商)。我理解oEmbed的消费者的安全含义,以及为什么他们不希望允许第三方标记直接进入他们的页面,但是为什么提供者要限制这一点呢?如果我构建了一个服务器代理并且没有过滤结果,我可以很容易地获得XSS漏洞。
只是猜测:
可能与飞行前请求有关。CORS规范指出,在许多情况下,客户端应该发送一个额外的OPTION
请求(基本上,对于非常基本的GET
或POST
之外的任何请求)。这意味着,在服务器端,仅仅通过提供CORS就会使传入的请求增加一倍,并且可能额外的负载是不可接受的。