Rest api在chrome中返回“网络连接失败”但在firefox中正常工作

时间:2017-09-15 12:36:43

标签: angularjs rest xmlhttprequest http-headers cors

我的休息api失败的最长时间,有时它在chrome中工作但它总是在firefox中工作。 当调用api时,旧数据即将响应。 科尔斯也有适当的规则。 根据我的观察,它是在2017年9月2日最近的Chrome更新后开始发生的。

使用的技术: - Java,Angularjs

以下是api失败时出现的错误: - XMLHttpRequest无法加载。对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此不允许原点访问。答复为HTTP status code 403.

获取Api代码: -

 executeGet: function () {
  var deferred = $q.defer();
  $http({
    url: REST_API.SERVICE_BASE_URL + encodeURI(this.restURI),
    method: 'GET',
    timeout: 2000,
    cache: false,
    headers: {'Content-Type': 'application/json'},
    withCredentials: true,
  }).then(function (response) {
    deferred.resolve(response.data, response.status, response.headers, response.config);
    $log.debug( 'URL - '+ url_called, response.data, response.status);
  },function (response) {
    deferred.reject(response.data, response.status, response.headers, response.config);
    $log.debug( 'URL - '+ url_called, response.data, response.status);
  });
  return deferred.promise;
},

提前致谢。

3 个答案:

答案 0 :(得分:0)

可悲的是,从这个描述中帮助你是不可能的。这与REST API无关,Chrome和Firefox似乎只是巧合。

要找出导致此缺失Access-Control-Allow-Origin的原因,您需要像调整其他任何内容一样调试应用程序。这可以通过几种方式完成。

您可以启用New Relic或Data Dog以尝试以智能形式捕获错误和其他调试信息,您可以使用Papertrail,Logentries等查看日志记录,您可以使用Rollbar查看正在触发的异常如果那比New Relic便宜一点。

很可能会触发一些错误(验证,验证,某些东西),这会使您的应用程序提前返回,并且它不会触发任何层处理CORS。我不能对可能是什么做出任何猜测,因为你只是放了“Java”而我们不知道它的Spring,别的还是习惯。

祝你好好调试!

答案 1 :(得分:0)

我遇到了同样的问题,它通过Chrome工作,但在通过AngularJS访问时没有。我在服务器端使用Spring启动。我的解决方案是在服务器端启用允许CORS。在Spring中,您可以使用WebMvcConfigurer启用。 WebMvcConfigurer enabling CORS

答案 2 :(得分:0)