尝试使用api / oEmbed从Vimeo上的剪辑获取数据时出现CORS问题

时间:2016-09-01 17:21:40

标签: javascript cors fetch vimeo

我正在使用fetch来获取数据。 像这样:

  getClipMetadata = (url) => {
    const endpoint = 'http://www.vimeo.com/api/oembed.json';

    fetch(`${endpoint}?url=${encodeURIComponent(url)}`, { 
      method: 'get',
      cache: 'no-cache', 
      mode: 'cors',
      headers: new Headers({
        'Access-Control-Allow-Origin': '*',
        'Content-Type': 'application/json'
      })
    })
      .then((response) => { return response.json();})
      .then((res) => console.log("async response received", res))
      .catch((err) => console.log("ajax error -> ", err))    
  }

所以我得到的错误就是:
Response for preflight is invalid (redirect)

我觉得Vimeo的开发者page看起来很简单。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

端点为'https://vimeo.com/api/oembed.json'而不是'http://www.vimeo.com/api/oembed.json',我发送的标头也会导致问题。

所以最终的工作代码如下所示:

  getClipMetadata = (url) => {
    const endpoint = 'https://vimeo.com/api/oembed.json';

    fetch(`${endpoint}?url=${encodeURIComponent(url)}`, { 
      method: 'get',
      cache: 'no-cache', 
      mode: 'cors',

    })
      .then((response) => { return response.json();})
      .then((res) => console.log("async response received", res))
      .catch((err) => console.log("ajax error -> ", err))    
  }