如何使用过滤器为 ServletRequest 设置协议

夸克

我有这样的过滤器:

public void doFilter(ServletRequest request, ServletResponse response,
                         FilterChain chain) throws IOException, ServletException {
        HttpServletRequest req = (HttpServletRequest) request;
        HeaderMapRequestWrapper requestWrapper = new HeaderMapRequestWrapper(req);
        String host = requestWrapper.getHeader("Host");
        String _protocol = requestWrapper.getProtocol(); // e.g. HTTP/1.1
        if(host == null || host.isEmpty()) {
            host = "127.0.0.1:8080";
        }
        System.out.println("====================================================");
        System.out.println("Updating Host: " + host);
        System.out.println("====================================================");
        requestWrapper.addHeader("Host", host);
        chain.doFilter(requestWrapper, response); // Goes to default servlet.
    }

我想知道是否可以修改过滤器内部的协议(_protocolServletRequest

贾斯汀阿尔巴诺

您可以创建一个子类HttpServletRequestWrapper并覆盖getProtocol. 只要任何受影响的代码仅使用getProtocol获取协议方法(而不是使用协议的内部值),那么您就可以替换ProtocolFixRequest原始HttpServletRequest预期的任何地方例如:

public class ProtocolFixRequest extends HttpServletRequestWrapper {

    private final String fixedProtocol;

    public ProtocolFixRequest(HttpServletRequest request, String protocol) {
        super(request);
        fixedProtocol = protocol;
    }

    @Override
    public String getProtocol() {
        return fixedProtocol;
    }
}

要使用它:

HttpServletRequest fixedRequest = new ProtocolFixRequest(originalRequest, "myProtocol");
chain.doFilter(fixedRequest, response);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用过滤器设置过滤数组?

来自分类Dev

ServletRequest过滤器测试用例

来自分类Dev

如何获取ServletRequest的RequestMethod?

来自分类Dev

从ActionContext获取/设置ServletRequest属性

来自分类Dev

如何在谷歌表中应用过滤器将行中的单元格设置为FormFormula()?

来自分类Dev

MS Access Form:将 Allow Edit 设置为 No,然后使用组合框应用过滤器

来自分类Dev

如何在Tableau中的过滤器条件公式中将“过滤器”设置为“全部”?

来自分类Dev

使用过滤器以自定义格式设置日期格式

来自分类Dev

使用过滤器输入在$ _post中设置一个值

来自分类Dev

角度:在控制器中使用过滤器设置对象

来自分类Dev

如何设置Django过滤器以全选

来自分类Dev

使用“ AND”方法设置多项过滤器

来自分类Dev

为给定协议实例设置JGroups的协议日志级别

来自分类Dev

如果没有过滤器,如何将卡片设置为默认值?如何为页面设置默认过滤器?

来自分类Dev

Servlet筛选器:如何从ServletRequest获取所有标头?

来自分类Dev

如何在Angular.js中为我的Json数据设置初始过滤器?

来自分类Dev

如何在Android中为拨号操作设置意图过滤器?

来自分类Dev

如何在.testcaferc配置文件中为夹具元设置多个过滤器?

来自分类Dev

如何在Angular.js中为我的Json数据设置初始过滤器?

来自分类Dev

如何在Windows 7索引搜索中为特定文件类型设置过滤器?

来自分类Dev

如何在Android上将输入过滤器设置为仅接受BINARY字符(0或1)?

来自分类Dev

如何在协议扩展中设置委托

来自分类Dev

为CasAuthenticationFilter设置预身份验证过滤器

来自分类Dev

将过滤器设置为图形的时钟参考

来自分类Dev

将通过的过滤器设置为Angular材质表

来自分类Dev

为Skype中的某些接触设置过滤器

来自分类Dev

为CasAuthenticationFilter设置预身份验证过滤器

来自分类Dev

设置为右键单击的过滤器按钮属性

来自分类Dev

从 onClick 设置为 data-in react 的过滤器状态

Related 相关文章

  1. 1

    如何使用过滤器设置过滤数组?

  2. 2

    ServletRequest过滤器测试用例

  3. 3

    如何获取ServletRequest的RequestMethod?

  4. 4

    从ActionContext获取/设置ServletRequest属性

  5. 5

    如何在谷歌表中应用过滤器将行中的单元格设置为FormFormula()?

  6. 6

    MS Access Form:将 Allow Edit 设置为 No,然后使用组合框应用过滤器

  7. 7

    如何在Tableau中的过滤器条件公式中将“过滤器”设置为“全部”?

  8. 8

    使用过滤器以自定义格式设置日期格式

  9. 9

    使用过滤器输入在$ _post中设置一个值

  10. 10

    角度:在控制器中使用过滤器设置对象

  11. 11

    如何设置Django过滤器以全选

  12. 12

    使用“ AND”方法设置多项过滤器

  13. 13

    为给定协议实例设置JGroups的协议日志级别

  14. 14

    如果没有过滤器,如何将卡片设置为默认值?如何为页面设置默认过滤器?

  15. 15

    Servlet筛选器:如何从ServletRequest获取所有标头?

  16. 16

    如何在Angular.js中为我的Json数据设置初始过滤器?

  17. 17

    如何在Android中为拨号操作设置意图过滤器?

  18. 18

    如何在.testcaferc配置文件中为夹具元设置多个过滤器?

  19. 19

    如何在Angular.js中为我的Json数据设置初始过滤器?

  20. 20

    如何在Windows 7索引搜索中为特定文件类型设置过滤器?

  21. 21

    如何在Android上将输入过滤器设置为仅接受BINARY字符(0或1)?

  22. 22

    如何在协议扩展中设置委托

  23. 23

    为CasAuthenticationFilter设置预身份验证过滤器

  24. 24

    将过滤器设置为图形的时钟参考

  25. 25

    将通过的过滤器设置为Angular材质表

  26. 26

    为Skype中的某些接触设置过滤器

  27. 27

    为CasAuthenticationFilter设置预身份验证过滤器

  28. 28

    设置为右键单击的过滤器按钮属性

  29. 29

    从 onClick 设置为 data-in react 的过滤器状态

热门标签

归档