当前位置: 首页 > 面试题库 >

如何截取自定义HTTP标头值并将其存储在Wicket的WebSession中?

栾峰
2023-03-14
问题内容

我需要从每个请求中获取某个自定义HTTP标头值,并将其放入WebSession中,以便以后在任何WebPage上都可以使用它。(我相信,Wicket的方法是让自定义类扩展具有适当访问器的WebSession。)

我的问题是, 我需要哪种过滤器(或其他机制)才能拦截标头并访问WebSession 来存储值?

我尝试使用普通的Java EE筛选器执行此操作,

CustomSession session = (CustomSession) AuthenticatedWebSession.get();

但是(也许不足为奇),结果是:

java.lang.IllegalStateException: 
    you can only locate or create sessions in the context of a request cycle

我是否应该扩展WicketFilter并在那里进行(我可以在那个时候访问会话?),还是需要更复杂的东西?

当然,如果我做错了什么,请指出。我是Wicket的新手。


问题答案:

我猜您需要实现一个自定义WebRequestCycle:

public class CustomRequestCycle extends WebRequestCycle{

    public CustomRequestCycle(WebApplication application,
        WebRequest request,
        Response response){
        super(application, request, response);
        String headerValue = request.getHttpServletRequest().getHeader("foo");
        ((MyCustomSession)Session.get()).setFoo(headerValue);
    }

}

在您的WebApplication类中,您可以像这样注册自定义RequestCycle:

public class MyApp extends WebApplication{

    @Override
    public RequestCycle newRequestCycle(Request request, Response response){
        return new CustomRequestCycle(this, (WebRequest) request, response);
    }

}

参考:

  • 请求周期和请求周期处理器


 类似资料:
  • 我正试图发送一个授权令牌,但我的服务器不知何故没有接收它。 //service.ts } //endpoint //标记过滤器

  • 如何为截击请求设置自定义标题?目前,有一种方法可以为POST请求设置正文内容。我有一个简单的GET请求,但我需要同时传递自定义头。我不知道JsonRequest类如何支持它。有可能吗?

  • 这是我的第一个问题。 我的Web应用程序正在使用Spring集成来获取第三方API响应。 响应具有以“X-”开头的自定义标头值。X值是两个。(X-AccessToken-Quota-Allotted,X-AccessToken-Quota-Flow) 因此,我在config xml的header-mapper中添加了inboundHeaderNames,如下所示。 以下是回应。我可以看到X-Acc

  • 我正在尝试从Laravel中的请求访问自定义标头。标题名为“从访问_”。列出Laravel中的所有标题,只会给出“标准标题”,但我设置的标题不在列表中。在“浏览器网络”选项卡中,我可以看到标头已发送。所以我想知道如何从Laravel内部访问它。 我使用Angular2使用默认的超文本传输协议服务发出请求。

  • 我正在使用。 下面是获取响应Header的代码部分。 它只给出了默认的标题详细信息。我无法获取在响应中发送的自定义标题。我能够在邮递员工具中看到自定义标题。

  • 我有一个代码凌空代码 我该如何设置一个名为Authorization的标题??