代码之家  ›  专栏  ›  技术社区  ›  quma

角度5-HTTP post

  •  0
  • quma  · 技术社区  · 7 年前

    我有一个后端接口,我可以用Angular 1.3应用程序调用它,没有问题。使用Angular 5应用程序,我得到一个HTTP 403(禁止) 我在一张图片中面对请求参数(左侧为角度1.3,右侧为角度5):

    Angular5 vs Angular1.3

    我的Angular 5代码如下所示:

    createDate(calendarEvent: CalendarEvent) {
        let serialDates = false;
        let calendarEventSerialDateType = 'NO_SERIAL_DATE';
        let serialEndDate = this.utilService.convertDateToDateString(new Date());
        let url: string = environment.apiEndpoint + 'calendarevents/calendarevent/' + serialDates + '/' + calendarEventSerialDateType + '/' + serialEndDate + '/';
        let headers = new Headers({ 'Content-Type': 'application/json', 'X-AUTH-TOKEN': this.authService.getToken()});
        let options = new RequestOptions({ headers: headers });
        return this.http.post(url, calendarEvent, options).map(res => res.json()).subscribe(res => console.log(res));
    

    }

    我不知道为什么 X-AUTH-TOKEN 未使用Angular 5设置,因为我在headers对象中使用

    let headers = new Headers({ 'Content-Type': 'application/json', 'X-AUTH-TOKEN': this.authService.getToken()});
    

    为什么 选项 按要求使用角度5代替 发布 比如角度1.3。

    有人知道我做错了什么吗?

    3 回复  |  直到 7 年前
        1
  •  4
  •   Sangeeth John    7 年前
    let Options = {
         headers: new HttpHeaders({
        'Content-Type': 'application/json'
      })
    };
    

    退回这个。http。post(url、calendarEvent、Options)。映射(res=>res.json())。订阅(res=>控制台日志(res));

        2
  •  0
  •   Supun Dharmarathne    7 年前

    选项 请求被视为飞行前请求,在实际请求之前发送,以检查方法是否存在。

    如果发送的请求有效,它将调用有效的方法。

    关于请求头,您可以使用上面答案中的头。

     let Options = {
         headers: new HttpHeaders({
        'Content-Type': 'application/json'
      })
        };
    
        3
  •  0
  •   Deepak swain    7 年前

    对于Angular5,

    import { HttpClient, HttpHeaders } from '@angular/common/http';
    
    const headers = new HttpHeaders().set('X-AUTH-TOKEN', this.authService.getToken());
    
    1. 默认情况下, 'Content-Type': 'application/json'
    2. 停止使用 map .
    3. 订阅响应并将其存储为可观察的,以便进一步访问。

    例子:

    createDate(calendarEvent: CalendarEvent) {
      let serialDates = false;
      let calendarEventSerialDateType = 'NO_SERIAL_DATE';
      let serialEndDate = this.utilService.convertDateToDateString(new Date());
      let url: string = environment.apiEndpoint + 'calendarevents/calendarevent/' + serialDates + '/' + calendarEventSerialDateType + '/' + serialEndDate + '/';
      let headers = new HttpHeaders().set('X-AUTH-TOKEN', this.authService.getToken());
      return this.http.post(url, calendarEvent, {headers: headers}).subscribe(res => console.log(res)); 
    }