微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Micronaut 的 netty 服务器 http 请求缺少标头

如何解决Micronaut 的 netty 服务器 http 请求缺少标头

我正在尝试将自定义身份验证服务与 micronaut 安全性集成,为此我实现了我自己的 AuthenticationProvider 并且它适用于基本身份验证,但是我还需要处理请求中传递的身份验证令牌。

为此,我正在尝试实现我自己的 AuthenticationFetcher,并在 fetchAuthentication 方法中尝试获取我的自定义身份验证标头,然后对请求进行身份验证。

  @Override
    public Publisher<Authentication> fetchAuthentication(HttpRequest<?> request) {
        if (request.getHeaders().get(authConfiguration.getTokenHeader()) != null) {

我遇到的问题是 netty 的 request.getHeaders() 没有返回发送到网络服务的所有标头(我从我的浏览器开发者控制台确认)

GET /service/all HTTP/1.1
Accept: application/json,text/plain,*/*
Cookie: m=2258:Z3Vlc3Q6Z3Vlc3Q%253D
Accept-Encoding: gzip,deflate
Host: localhost:4200
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML,like Gecko) Version/14.1 Safari/605.1.15
Accept-Language: pl-pl
Referer: http://localhost:4200/campaigns
Connection: keep-alive
X-Token: my.token.here

headers visible in webservice

这是我的应用设置

micronaut:
  server:
    netty:
      maxHeaderSize: 1024
      worker:
        threads: 4
      parent:
        threads: 4
      childOptions:
        autoRead: true
  application:
    name: appName

感谢任何反馈。

解决方法

这是由 cors 配置引起的:

micronaut:
  server:
    cors:
      enabled: true

添加此内容后,我的请求标头在过滤器链中被删除。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。