为所有传出请求设置自定义Http标头

时间:2014-08-27 18:32:57

标签: javascript cross-browser http-headers

我正在开展一个项目,我需要在所有请求中从localStorage中的值设置自定义http标头。由于我的网络应用程序必须从客户端获取价值,因此我很难弄清楚如何确保用户发送的每个Http请求都包含此标头。

在请求中设置标头后,它将使用servlet过滤器传播到响应。过滤器检查请求中的标头并重定向到初始化页面,我可以使用该页面获取localStorage值并设置所需的任何监听器。

public void doFilter( @NotNull final ServletRequest request,
                      @NotNull final ServletResponse response,
                      FilterChain filterChain ) throws IOException, ServletException {
    final HttpServletRequest hsr = (HttpServletRequest) request;
    final String value = hsr.getHeader("Custom-Header");

    if( isNullOrEmpty(value) ) {

        ((HttpServletResponse) response).sendRedirect("./init.html");

    } else {

        ((HttpServletResponse)response).setHeader("Custom-Header", value);
        filterChain.doFilter(request, response);

    }
}

因此,在客户端,如果需要,我应该在响应中使用标头。我无法提出一个干净的跨浏览器解决方案,以确保初始化后的所有传出http请求都设置了此自定义标头。

我喜欢MDN的基于观察者的解决方案:https://developer.mozilla.org/en-US/docs/Setting_HTTP_request_headers但我不能完全依赖其他浏览器不支持的XPCOM组件。

0 个答案:

没有答案