我在这里遗漏了一些东西。我正在努力让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": "*"},
});
答案 0 :(得分:1)
看这里:
https://www.npmjs.com/package/magicseaweed
接下来,它说明为什么他们的API包装器无法在浏览器中运行。这与您无法在浏览器中进行Ajax调用的原因相同。
常见问题
我可以使用browserify在浏览器中使用此模块吗?
理论上是的,但Magicseaweed API当前没有在浏览器请求中发送Access-Control-Allow-Origin标头(如果您通过cURL重播请求,会以某种方式发送标头)。 < / p>
因此,如果API更改了该行为,则此模块将与browserify一起使用。
您可以站起来自己的代理服务器,也可以使用互联网上提供的免费代理服务器之一: