标签: angular-http

$ http响应拦截器头

我正在响应中从服务器发送自定义标头.在$http响应拦截器中我想得到这个标题,但我能得到的唯一标题是Content-type标题.我该如何解决我的问题?

我的$http拦截器:

response: function (response) {
            var AuthToken = response.headers('AuthToken');
            return response || $q.when(response);
        },
Run Code Online (Sandbox Code Playgroud)

AuthToken 未定义.

javascript angularjs angular-http

11
推荐指数
1
解决办法
6755
查看次数

在Angular中没有正文的HTTP Post

我想知道如何在没有正文的情况下发送HTTP post请求(特别是在Angular中).这就是我现在正在做的事情,但我收到了错误Expected 2-3 arguments, but got 1).

我意识到第二个参数是针对正文的,但我并没有将它发送到服务器(是的,我知道POST调用改变了系统的状态并且已经查看了这个问题).

postRequest(id) {
  this.http.post('/api?data=' + id).map(
    (response) => {
      return response;
    }
  )
}
Run Code Online (Sandbox Code Playgroud)

http typescript angular-http angular

11
推荐指数
2
解决办法
1万
查看次数

将$ http.get()请求中的数据绑定到ng-repeat中

我从服务器上获得了很好的JSON数据,但是当尝试使用ng-repeat指令在我的页面上列出它时会出现问题.

这是我的HTML正文内容,只要$ http.get()方法接收到请求的数据,'mydata'(JSON数组)就会正确显示,但ng-repeat没有列出数组元素:

<body ng-app="myapp">
  <div ng-controller="MyController" >
    Data from server: {{ mydata }}          
  </div>

  <hr>

  <ul ng-controller="MyController as controller">
    <li ng-repeat="data in controller.mydata">
      {{ data }}
    </li>
 </ul>
</body>
Run Code Online (Sandbox Code Playgroud)

这是Javascript代码:

var URI = 'http://my_service_uri/';

angular.module("myapp", [])
    .controller("MyController", function($scope, $http) {
        $scope.mydata = [];

        $http.get(URI)
            .then(function(result) {
                $scope.mydata = result.data;
             });
    });
Run Code Online (Sandbox Code Playgroud)

angularjs angularjs-ng-repeat angular-http

10
推荐指数
1
解决办法
2万
查看次数

AngularJS - 无法从$ http读取响应头

Authentication:76efbc0946773b62c93e952b502a47acd898200f6f80dc46ac87ffc501c00780当我用检查器检查请求时,我的http响应包含头部身份验证(如此处所述:),但是调用headers("Authentication")返回null

return $http({
    method: "GET",
    url: url,
    headers: {
      'Content-Type': "application/json"
    }
}).success(function (data, status, headers, config) {
    console.log(headers("Authentication"));
})
Run Code Online (Sandbox Code Playgroud)

你对我的做法有什么看法吗?

仅供参考,我已经尝试将其切换回"承诺"方式,.then问题仍然存在.

http-headers angularjs angular-http

10
推荐指数
2
解决办法
2万
查看次数

$ http.post()方法正在发送GET

注意:

我发现了一个可能相关的问题,需要在这里提出一个新问题


这是一个奇怪的问题.我在2年的时间里一直使用角度,从来没有遇到过这个问题.

我正在使用angular v1.5.0.我正在发布这样的帖子请求:

$http({
    method: "POST",
    url: "/myurl",
    data: {
        file: myFile // This is just an object
    }
});
Run Code Online (Sandbox Code Playgroud)

普通的POST请求对吗?得到这个.我查看控制台,"网络"选项卡将请求记录为GET.离奇.所以我已经开始像这样工作:

$http.post("/myurl", {file: myFile});
Run Code Online (Sandbox Code Playgroud)

一样.单步执行$http服务代码后,我确信正在正确设置标头.有没有其他人遇到这个问题?

更新

考虑到德国人的建议,我尝试使用该$resource服务:

promise = $resource("/upload").save()
Run Code Online (Sandbox Code Playgroud)

(由于其他原因,这会返回错误,它仍然可以正确执行POST).我遇到了同样的问题:请求在控制台中记录为GET.

以下是请求到达我的服务器时的标头:

GET /myurl/ HTTP/1.1
Host: localhost:8001
Accept: application/json, text/plain, */*
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US,en;q=0.8
Cache-Control: no-cache
Connection: keep-alive
Pragma: no-cache
Referer: http://localhost:8001/myurl/
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36
Run Code Online (Sandbox Code Playgroud)

更新2 …

http go angularjs angular-http

10
推荐指数
1
解决办法
5065
查看次数

访问angularjs中的自定义http响应标头

服务器响应

我正在尝试访问标题'错误详细信息',您可以在浏览器网络检查器(上面的链接)中看到,标头返回.服务器方面我还将自定义标头添加到"Access-Control-Expose-Headers"以允许跨域请求,因为这被建议是对其他问题的修复.

以下是对服务器的请求以及成功/错误回调.

this.signon = function (request, onComplete, onError) {
    console.log("Calling server with 'login' request...");

    return $http.post("http://localhost:8080/markit-war/services/rest/UserService/login/", request)
        .then(onComplete, onError);
};

var onLookupComplete = function(response) {
    if (response.data.username)
    {
        //If user is returned, redirect to the dashboard.
        $location.path('/dashboard');
    }

    $scope.username = response.data.username;
};

var onError = function(response) {
    $scope.error = "Ooops, something went wrong..";
    console.log('error-detail: ' + response.headers('error-detail'));
};
Run Code Online (Sandbox Code Playgroud)

当我尝试访问响应头时,如下所示:

    console.log(response.headers());
    console.log('error-detail: ' + response.headers('error-detail'));
Run Code Online (Sandbox Code Playgroud)

这只输出:content-type:"application/json"error-detail:null

有没有理由将错误详细信息标头映射到响应对象?

javascript rest angularjs angular-http

10
推荐指数
2
解决办法
4140
查看次数

在请求标头Angular2中设置Cookie

我是angular2的新手.我的服务器(spring)在其响应头中使用set-cookie值响应身份验证.

如何将cookie设置为下一个API调用的请求标头?

我搜索了很多,但我找不到合适的解决方案.

typescript angular-http angular

10
推荐指数
2
解决办法
3万
查看次数

如何在Angular中有条件地添加HttpClient拦截器

最近我一直在使用Angular HttpClient拦截器.

我添加了与某些HTTP GET方法相对应的标头,对于某些我不需要这些标头.

如何告诉我的拦截器有条件地将拦截器添加到那些方法?我甚至可以拆分服务,例如一个服务用于标头,一个服务没有标题,一个用于不同的标题,一个用于不同的标题.

NgModule提供商

{
  provide: HTTP_INTERCEPTORS,
  useClass: AuthInterceptor,
  multi: true,
},{
  provide: HTTP_INTERCEPTORS,
  useClass: AngularInterceptor,
  multi: true,
}
Run Code Online (Sandbox Code Playgroud)

MyInterceptors

@Injectable()
export class AuthInterceptor implements HttpInterceptor {
  intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    const authReq = req.clone({headers: req.headers.set('X-Auth-Token', "-------------------------")});
    return next.handle(authReq);

  }
}


@Injectable()
export class AngularInterceptor implements HttpInterceptor {
  intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    return next.handle(req).do(event => {}, err => {
        if(err instanceof HttpErrorResponse){
            console.log("Error Caught By Interceptor");
            //Observable.throw(err);
        }
    });
  }
}
Run Code Online (Sandbox Code Playgroud)

angular-http angular-http-interceptors angular angular-httpclient

10
推荐指数
1
解决办法
5074
查看次数

在Angular 4中处理来自Api的过期令牌

我需要帮助处理我的角度应用程序中的过期令牌.我的api有过期的时间但我的问题是当我忘记退出我的角度应用程序,一段时间后,我仍然可以访问主页但没有数据.我能做些什么吗?是否有可以处理此问题的库?或者有什么我可以安装?更好,如果我没有安装任何东西.这是我的身份验证码?我可以添加任何可以处理过期的内容吗?如果过期,我将无法访问该主页.

auth.service.ts

 export class AuthService {
  private loggedIn = false;

  constructor(private httpClient: HttpClient) {
  }

  signinUser(email: string, password: string) {  
    const headers = new HttpHeaders() 
    .set('Content-Type', 'application/json');

    return this.httpClient
    .post(
      'http://sample.com/login', 
       JSON.stringify({ email, password }), 
       { headers: headers }
    )
    .map(
        (response: any) => {
          localStorage.setItem('auth_token', response.token);
          this.loggedIn = true;
          return response;
        });
   }

    isLoggedIn() {
      if (localStorage.getItem('auth_token')) {
        return this.loggedIn = true;
      }
    }

   logout() {
     localStorage.removeItem('auth_token');
     this.loggedIn = false;
    }
}
Run Code Online (Sandbox Code Playgroud)

authguard.ts

@Injectable()
export class AuthGuard implements CanActivate …
Run Code Online (Sandbox Code Playgroud)

token access-token angular-http angular

10
推荐指数
2
解决办法
2万
查看次数

AngularJS:在自定义服务中执行$ http请求并返回数据

我已经在angular中定义了一个自定义http服务,如下所示:

angular.module('myApp')
  .factory('myhttpserv', function ($http) {

  var url = "http://my.ip.address/"

  var http = {
      async: function (webService) {
          var promise = $http.get(url + webService, { cache: true }).then(function (response) {
            return response.data;
        });
          return promise;
       }
  };
  return http;
});
Run Code Online (Sandbox Code Playgroud)

我可以在我的控制器中访问此服务,如下所示:

angular.module('myApp')
  .controller('myCtrl', function (myhttpserv) {

  var webService = 'getUser?u=3'

  myhttpserv.async(webService).then(function (data) {
      console.log(data);
  })

});
Run Code Online (Sandbox Code Playgroud)

但是,我现在需要简化此过程,以便使用静态URL将其全部包含在服务中,并且它只返回数据.所以我可以在控制器中调用它,如下所示:

 angular.module('myApp')
  .controller('myCtrl', function ($scope, myhttpserv) {

      console.log(myhttpserv.var1);
      console.log(myhttpserv.var2);
      etc...

});
Run Code Online (Sandbox Code Playgroud)

我似乎无法调整服务以获得此功能.有人知道正确的方法吗?

javascript angularjs angularjs-service angular-http

9
推荐指数
1
解决办法
2万
查看次数