Javascript axios拦截器:自定义标头仅添加到选项请求中

Javascript axios拦截器:自定义标头仅添加到选项请求中,javascript,axios,Javascript,Axios,因此,我为axios设置了一个拦截器,并在请求中添加了一个自定义头。但是,当我签入服务器代码时。标题仅在选项请求中接收 class ChainInterceptors { constructor(config) { this.cleanConfig = { ...config }; } build() { return this.cleanConfig; } } export class ReqInterceptor extends ChainIntercept

因此,我为axios设置了一个拦截器,并在请求中添加了一个自定义头。但是,当我签入服务器代码时。标题仅在
选项
请求中接收

class ChainInterceptors {
  constructor(config) {
    this.cleanConfig = { ...config };
  }
  build() {
    return this.cleanConfig;
  }
}

export class ReqInterceptor extends ChainInterceptors {
  constructor(config) {
    super(config);
  }
  setLog() {
    this.cleanConfig.headers['Respond-By'] = // some value;
    return this;
  }
}
我正在以以下方式实施:

export const request = {
  init() {
    const token = getItem('token');
    const request = axios.create({
      httpsAgent: new https.Agent({ keepAlive: true }),
      baseURL: LOCAL_URL,
      headers: {
        authorization: `bearer ${token}`,
        'Content-Type': 'application/json',
      },
    });
    this.attachInterceptor(request);
    return request;
  },

  attachInterceptor(request) {
    request.interceptors.request.use(config => {
      return new ReqInterceptor(config).setLog().build();
    });
    request.interceptors.response.use(
      response => {
        // response interceptors
      },
      error => {
        // Do something with response error
        return Promise.reject(error);
      }
    );
  },

  get() {
    return this.init().get.apply(null, arguments);
  },

  // and other methods...
};

如上所述,
Respond By
标题仅出现在我的
OPTIONS
请求中。非常感谢您的指导。

我使用拦截器中的以下设置来传递令牌和当前语言。当前语言是自定义标题,我需要检测用户从客户端选择的当前语言

下面是config.headers[“lang”]=
${lang}
是自定义标题

从服务器端,我通过httpContextAccessor.HttpContext.Request.Headers[“lang”]
获得它

export function setupAxios(axios, store) {
  axios.interceptors.request.use(
    config => {
      const {
        auth: { authToken },
        i18n: { lang }
      } = store.getState();

      // console.log("language => ", lang);
      // console.log("setupAxios => ", store.getState());

      if (authToken) {
        config.headers.Authorization = `Bearer ${authToken}`;
        config.headers["lang"] = `${lang}`;
      }
      store.dispatch(httpRequest.actions.startRequest(true));
      return config;
    },
    err => {
      store.dispatch(httpRequest.actions.endRequest(false));
      return Promise.reject(err);
    }
  );
  axios.interceptors.response.use(
    response => {
      store.dispatch(httpRequest.actions.endRequest(false));
      return response;
    },
    err => {
      store.dispatch(httpRequest.actions.endRequest(false));
      return Promise.reject(err);
    }

  );
}