Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Axios无访问控制允许原点_Javascript_Api_Cors_Axios - Fatal编程技术网

Javascript Axios无访问控制允许原点

Javascript Axios无访问控制允许原点,javascript,api,cors,axios,Javascript,Api,Cors,Axios,我不断遇到错误请求的资源上不存在“Access Control Allow Origin”头。起源'http://localhost:3000因此,不允许访问。 我知道这是web上的一个常见问题,但除了使用JSONP的解决方法之外,我在stackoverflow上看不到任何有帮助的答案 我的代码是 componentDidMount() { if (navigator.geolocation){ function success(position) { v

我不断遇到错误
请求的资源上不存在“Access Control Allow Origin”头。起源'http://localhost:3000因此,不允许访问。

我知道这是web上的一个常见问题,但除了使用JSONP的解决方法之外,我在stackoverflow上看不到任何有帮助的答案

我的代码是

  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);
    }
  }

这是对ajax调用的浏览器限制,这里只有三个可用选项

  • 如果您拥有请求的服务器,则可以将访问控制允许源添加为您的应用程序域
  • 否则这两个是唯一的选择

  • 使用JSONP作为响应格式,并使用回调处理

  • 例如,您可以使用服务器端代理。您可以在nginx或apache配置中调用yourapplication.com/somerequest,将“somerequest”路径映射到要使用的外部域,即api.darksky.net


  • 如果您有权访问服务器端应用程序,请遵循Mohamed Jahaber Sadiq提供的第一个答案


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

    如果dupe target答案上的任何答案都不能解决您的问题,那么它可能无法解决。您必须遵循CORS策略,在不使用XHR(又名jsonp)的情况下发出请求,或者从服务器发出请求。