【问题标题】:Instagram API CORBInstagram API CORB
【发布时间】:2018-11-22 12:58:06
【问题描述】:

我的 Angular 应用使用 https://api.instagram.com/oembed 嵌入 instagram 帖子,但它收到跨域读取阻止 (CORB) 阻止的跨域响应,尽管该应用使用 Jsonp。

Chrome 控制台显示 url 为 https://api.instagram.com/oembed/?omitscript=true&omit_script=true&callback=ng_jsonp.__req0.finished&maxwidth=800&hidecaption=true&url=https://www.instagram.com/p/BeyU33KF-wQ/

【问题讨论】:

  • http.jsonp 在这里未定义,但我使用 import { Jsonp } from '@angular/http';所以,我通过 Jsonp 工作。
  • 虽然当我只使用 http(不是 jsonp)时它可以工作。

标签: angular instagram instagram-api


【解决方案1】:

JSONp 在 Angular 中已被弃用。并且有一个非常合理的原因。 JSONp 是一种请求方法,以前用于将回调插入到请求的响应正文中。您可以将其视为一种解决方案,早于我们广泛接受的 Angular 中的 Promise 和 observables。

https://angular.io/api/http/Jsonp

从您的示例中,如果工作 JSONp 将在收到响应时执行 ng_jsonp.__req0.finished()。从角度来看,问题是如果我正在控制您请求的 api。好吧,我可以使用我自己的包含恶意代码的回调将您的请求 301 发送到不同的 url。

这是 CORB 试图代表用户解决的漏洞类型。

这也是为什么相同的请求在标准 GET 上也能正常工作的原因,因为回调被简单地忽略了,而有利于有效的 JSON。

如果你有一个特定的回调想要在响应进来后执行,我建议看看 RXJS。

(这个答案假设你指的是 Angular(当前)而不是 AngularJs,如果你指的是 Angular js,你应该研究 Promise)

【讨论】:

    猜你喜欢
    • 2020-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-09
    相关资源
    最近更新 更多