Axios - 没有'Access-Control-Allow-Origin'标题

时间:2016-10-12 20:13:55

标签: cors axios

我在这里遗漏了一些东西。我正在努力让API调用工作。 然后我将网址分开如下,它的工作原理 - 一次。之后它再也无法工作了。我发誓我没有改变什么。

你如何在AXIOS中实现它?

错误信息是:

  

XMLHttpRequest无法加载   http://magicseaweed.com/api/W2Z26fXscpELi7nPB0svfqcGj9FtGO9e/forecast/?spot_id=228。   请求中不存在“Access-Control-Allow-Origin”标头   资源。因此不允许来源“http://localhost:8080”   访问。

import axios from 'axios';

const ROOT_URL = `magicseaweed.com/api/W2Z26fXscpELi7nPB0svfqcGj9FtGO9e/forecast/`;

export const FETCH_WEATHER = 'FETCH_WEATHER';

export function fetchWeather() {
    const url = `http://${ROOT_URL}?spot_id=228`;
    const request = axios.get(url);

    return {
        type: FETCH_WEATHER,
        payload: request
    };
}

我尝试过这个改进的GET,但无济于事

axios({
  url: url ,
  headers: {"Access-Control-Allow-Origin": "*"},
});

1 个答案:

答案 0 :(得分:1)

看这里:

https://www.npmjs.com/package/magicseaweed

接下来,它说明为什么他们的API包装器无法在浏览器中运行。这与您无法在浏览器中进行Ajax调用的原因相同。

常见问题

我可以使用browserify在浏览器中使用此模块吗?

理论上是的,但Magicseaweed API当前没有在浏览器请求中发送Access-Control-Allow-Origin标头(如果您通过cURL重播请求,会以某种方式发送标头)。 < / p>

因此,如果API更改了该行为,则此模块将与browserify一起使用。

您可以站起来自己的代理服务器,也可以使用互联网上提供的免费代理服务器之一:

https://developer.yahoo.com/yql/

https://crossorigin.me/