2016-12-01 57 views
0

我一直运行到错误No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:3000' is therefore not allowed access.Axios公司没有访问控制允许来源

我知道,这是一个经常被问到的问题在网络上,但我在这里没有看到有帮助的答案上比其他计算器使用JSONP的解决方法。

我的代码是

componentDidMount() { 
    if (navigator.geolocation){ 
     function success(position) { 
     var latitude = position.coords.latitude; 
     var longitude = position.coords.longitude; 
     axios.get(`https://api.darksky.net/forecast/apikey/`+latitude+`,`+longitude+`?units=auto`) 
     .then(result => { 
      this.setState({ 
      daily: result.data.daily.data, 
      loading: false, 
      error: null 
      }); 
     }) 
      .catch(err => { 
      // Something went wrong. Save the error in state and re-render. 
      this.setState({ 
       loading: false, 
       error: err 
      }); 
      }); 
     }; 
     function error() { 
     console.log('geolocation error') 
     }; 
     navigator.geolocation.getCurrentPosition(success.bind(this), error); 
    } 
    } 
+0

如果愚蠢目标答案上的答案都不能解决您的问题,则可能无法解决。您必须遵循CORS策略,在没有XHR(又名jsonp)的情况下发出请求,或者从服务器发出请求。 –

回答

-1

这是ajax调用浏览器限制,只有三个位置可用的选项。

  1. 如果您拥有所请求的服务器,则可以将Access-Control-Allow-Origin添加为您的应用程序域。

否则这两个是唯一的选择。

  1. 使用JSONP作为使用回调的响应格式n进程。

  2. 您可以将服务器端代理用于例如。您可以拨打nginx的或Apache的配置图“somerequest”路径,要使用即外部域yourapplication.com/somerequest,api.darksky.net

0

如果您在访问服务器端应用程序,请按照Mohamed Jahaber Sadiq提供的第一个答案

如果目的只是为了查看结果,您可以使用“Allow-Control-Allow-Origin:*”chrome插件,默认情况下会将标头添加到所有通过chrome处理的响应。

相关问题