Soundcloud通过https嵌入,一些资源响应为403

时间:2017-05-24 09:29:01

标签: javascript iframe soundcloud

这是一个由两部分组成的问题。

FIRST: 我们在嵌入soundcloud资源时遇到问题,我们的网站使用https。 当加载嵌入式资源时,它会发出请求(例如url:http://soundcloud.com/oembed?format=js&url=https://soundcloud.com/user908553597%2Fann-marie-in-my-feelings-treat-me-like-somebody-remake&iframe=true),它正确地响应了这个:

({
  "version":1.0,
  "type":"rich",
  "provider_name":"SoundCloud",
  "provider_url":"http://soundcloud.com",
  "height":400,"width":"100%",
  "title":"Ann Marie - In My Feelings (Treat Me Like Somebody Remake) by user908553597",
  "description":"",
  "thumbnail_url":"http://i1.sndcdn.com/artworks-000146535766-ycam16-t500x500.jpg",
  "html":"\u003Ciframe width=\"100%\" height=\"400\" scrolling=\"no\" frameborder=\"no\" src=\"https://w.soundcloud.com/player/?visual=true\u0026url=http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F246270367\u0026show_artwork=true\"\u003E\u003C/iframe\u003E",
  "author_name":"user908553597",
  "author_url":"http://soundcloud.com/user908553597"
});

但是,使用http协议返回“provider_url”和“thumbnail_url”,因为我们的网站是通过https运行的,这会导致问题。 是否可以使用标记或参数来确保响应中的所有资源都使用https,或者这是否需要更改API?

SECOND: 一些资源似乎返回了一个http 403响应代码,例如:http://soundcloud.com/oembed?format=js&url=https://soundcloud.com/richgurl_1%2Ftink-treat-me-like-somebody&iframe=true这是API应该如何处理某些资源请求?即这是一种可预测的行为,因此人们可以对返回的403进行操作。

提前致谢

1 个答案:

答案 0 :(得分:1)

所以我想通了, 或者至少是可管理的解决方案。改变协议做到了 示例网址:https://soundcloud.com/oembed?format=js&url=https://soundcloud.com/user908553597%2Fann-marie-in-my-feelings-treat-me-like-somebody-remake&iframe=true

thumbnail_url通过http进行重新调整,我的解决方案是通过Angular中的.ts文件将协议更改为https,该文件使用replace获取上述url的响应。然后使用thumbnail_url的iframe有一个带有所需协议的URL。