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

mor*_*rne 8 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
    };
}
Run Code Online (Sandbox Code Playgroud)

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

axios({
  url: url ,
  headers: {"Access-Control-Allow-Origin": "*"},
});
Run Code Online (Sandbox Code Playgroud)

Rob*_*kal 1

看这里:

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

在底部,它说明了为什么他们的 API 包装器无法在浏览器中工作。这与无法在浏览器中进行 Ajax 调用的原因相同。

常问问题

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

理论上是的,但 Magicseaweed API 目前不会在浏览器请求中发送 Access-Control-Allow-Origin 标头(如果您通过 cURL 重放请求,则会以某种方式发送标头)。

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

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

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

https://crossorigin.me/