angular http - request返回200 OK,但是触发了错误事件而不是成功

时间:2017-04-13 06:58:44

标签: angularjs http

我在http://transltr.org/中向外部服务发出https请求。

var reqUrl = "http://transltr.org/api/translate?text=dog&to=he";

      var deferred = $q.defer();
          $http.get(reqUrl).then(function(response) {
                    deferred.resolve(response);
                   alert("sada");
         },function (error) {
                             deferred.reject(error);
                         });


          return deferred.promise;

rrsponse是200,我得到数据:

enter image description here

但已触发错误提醒。有办法获取这些数据吗?

我也在控制台中看到错误:

  

XMLHttpRequest无法加载http://transltr.org/api/translate?text=dog&to=he。 ' Access-Control-Allow-Origin'标头包含多个值' *,*',但只允许一个。起源' http://myDomain.co.il'因此不允许访问。

我也试过这个版本(在这种情况下,根本没有回复):

   var reqUrl = "http://transltr.org/api/translate";
 var params = {
  to: to,
  text: text
  };

      var deferred = $q.defer();
        var request = {
                      method: 'GET',
                      url: reqUrl,
                      dataType: "json",
                      contentType: "application/json; charset=utf-8",
                      headers: {
                          'Content-Type': 'application/json',
                          'Cache-Control': 'no-cache',
                          'X-Requested-With': 'XMLHttpRequest',
                          'Access-Control-Allow-Origin': '*'
                      },
                      params: params
                  };


          $http(request).success(function (data) {
              deferred.resolve(data);
          }).error(function (error) {
              deferred.reject(error);
          });

2 个答案:

答案 0 :(得分:0)

如果您在Windows上使用Chrome,请执行以下操作以禁用CORS过滤器。

退出chrome。按住Windows图标,然后按下字母R,同时保持Windows按键。将下面的命令粘贴到结果框上,然后按Enter键。

  

chrome.exe --user-data-dir =“C:/ Chrome开发者会话”    - 禁用网络的安全性

这将打开Chrome,并禁用 websecurity (无CORS过滤器)。现在,在此Chrome窗口中重新加载您的应用,并让我知道任何由此产生的异常。这是为了帮助您实现您想要的目标,但您必须在 API 中处理CORS。

答案 1 :(得分:-7)

你无法混合Javascript和PhP变量

  

var deferred = $ q .defer();