【问题标题】:Axios - No 'Access-Control-Allow-Origin' header is presentAxios - 不存在“Access-Control-Allow-Origin”标头
【发布时间】:2017-02-21 18:47:27
【问题描述】:

我在这里遗漏了一些东西。我正在努力让 API 调用正常工作。 然后我将 url 像下面那样拆分,它可以工作 - 从字面上看一次。之后,它再次无法工作。我发誓我没有改变任何东西。

你是如何在 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": "*"},
});

【问题讨论】:

  • No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin '...' is therefore not allowed access 的可能重复项。这是一个超级常见的问题,与 redux 没有任何关系。该帖子暗示回答了您的问题,但可能会有更好的问题。
  • 好的,公平点。但是查看axios 文档,我没有看到可以配置它的东西。我确实尝试了其他一些选项,但没有奏效。我会列出来的
  • 这是必须设置服务器才能执行的操作。答案告诉你,如果你在服务器上建立一个项目,你仍然可以调用魔法海藻。
  • 我刚刚调用了 url magicseaweed.com/api/W2Z26fXscpELi7nPB0svfqcGj9FtGO9e/forecast/… 和您由于 CORS 导致的错误的一部分,服务器似乎以 500 响应,这表明他们一方出现意外错误。您确定 API 没有问题吗?有时,如果出现错误(在本例中为 500),实现服务器 api 的人会忘记在响应中添加 CORS 标头
  • 您刚刚在问题中所做的更改不会解决任何问题,该标头应该在服务器的响应中返回,而不是在请求中发送。这是服务器 api 的工作。

标签: cors axios


【解决方案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/

【讨论】:

  • 我正在尝试自己调用它,我可以确认 API 没有返回 Access-Control-Allow-Origin 标头,因此它不适用于 AJAX。顺便说一句,它是 axios,而不是 browserify :) 编辑:抱歉刚刚看到他们在他们的 npm 页面上说了同样的话,这就是你说 browserify 的原因 :)
猜你喜欢
  • 1970-01-01
  • 2018-10-28
  • 2019-08-15
  • 2015-09-28
  • 2016-10-30
  • 1970-01-01
  • 2016-01-11
  • 2016-05-07
  • 2018-07-27
相关资源
最近更新 更多