angular post请求头,怎么加上token?

要做一个验证的功能,需要每次请求都带上token,而后台要求要放在Header中,请问,该怎么放进去?

  /**
   * 对参数进行编码
   *
   * @param criteria 需要编码的参数
   */
  encode(criteria) {
    const params: URLSearchParams = new URLSearchParams();
    for (const key of Object.keys(criteria)) {
      const tmp = criteria[key];
      if (tmp instanceof Array) {
        for (const v of tmp) {
          params.append(key, v);
        }
      } else if (tmp instanceof Date) {
        params.set(key, this.formateDate(tmp));
      } else {
        params.set(key, criteria[key]);
      }
    }

    return params;
  }

  /**
   * 使用POST方法对指定URL发送指定的参数
   *
   * @param url
   * @param criteria 发送的参数对象
   */
  postWithCriteria(url, criteria) {
    // console.log('请求:', url, criteria);
    return this.http.post(url, this.encode(criteria || {})).map(r => {
      const tmp = r.json();
      // console.log('响应:', tmp);
      if (typeof tmp.data === 'string') {
        tmp.data = JSON.parse(tmp.data);
      }
      return tmp;
    });
  }

  /**
   * @param url 网址
   * @param criteria 请求参数
   * @param cls 响应类
   * */
  post(url, criteria = null, cls = null) {
    return this.postWithCriteria(url, criteria || {}).map((data: ResponseMessageModel) => {
      if (data.resultType && cls) {
        if (Array.isArray(data.data)) {
          data.data = data.data.map(item => {
            return new cls(item);
          });
        } else if (Array.isArray(data.data.Rows)) {
          data.data.Rows = data.data.Rows.map(item => {
            return new cls(item);
          });
        } else if (typeof(data.data) === 'object') {
          data.data = new cls(data.data);
        }
      }

      this.timeManagerService.setTimestamp(data.timeStamp);
      return data;
    });
  }
阅读 5.1k
2 个回答
新手上路,请多包涵

加拦截器HttpInterceptor

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题