Aurelia获取客户端重复请求的期望:100-继续

时间:2019-10-03 15:53:47

标签: javascript http aurelia aurelia-fetch-client

在某些使用草率Web代理的客户端中,我发现了一个可变的用例,根据W3,我发现:

  

如果HTTP / 1.1客户端发送的请求包含请求正文,但不包含带有“ 100-continue”期望的Expect请求标头字段,并且该客户端未直接连接到HTTP / 1.1源服务器,并且如果客户端在收到来自服务器的任何状态之前看到连接已关闭,则客户端应重试该请求。

因此,我试图将Expect: 100-continue标头添加到默认标头的属性中,以避免将来发生任何重复的过程。但是我注意到了,或者插件或浏览器正在将其从请求标头中删除。

我已经尝试过其中一种情况

    this.configure(config => {
  config
    .withBaseUrl(baseURL)
    .withDefaults({
      credentials: 'same-origin',
      headers: {
        Accept: 'application/json',
        'X-Requested-With': 'Fetch',
        'accept-enconding': 'gzip',
        'Expect': '100-continue',
        /*global __VERSION__ */
        'X-WebApp-Version': __VERSION__
      }
    })
    .withInterceptor({
      request(request) {
        let token = authService.getToken();
        if (token) {
          request.headers.set('Authorization', `Bearer ${token}`);
        }
        return request;
      }
    });
});

    this.configure(config => {
  config
    .withBaseUrl(baseURL)
    .withDefaults({
      credentials: 'same-origin',
      headers: {
        Accept: 'application/json',
        'X-Requested-With': 'Fetch',
        'accept-enconding': 'gzip',
        /*global __VERSION__ */
        'X-WebApp-Version': __VERSION__
      }
    })
    .withInterceptor({
      request(request) {
        let token = authService.getToken();
        if (token) {
          request.headers.set('Authorization', `Bearer ${token}`);
        }

        if(request.method === 'POST') {
          request.headers.set('Expect', '100-continue');
        }

        return request;
      }
    });
});

是否有人试图避免默认情况下重复请求? 是否可以在aurelia-fetch-client插件中配置重复拦截器?

感谢您的支持

0 个答案:

没有答案