【问题标题】:Cannot seem to add_header "Authorization" in NGINX似乎无法在 NGINX 中添加_header“授权”
【发布时间】:2022-06-10 23:59:57
【问题描述】:

我正在尝试在 NGINX 中为在 NGINX 中运行的应用程序分配一个授权标头。我看到了我添加的其他标头,但从来没有看到 Authorization 标头。谁能告诉我我错过了什么?这是我的配置的样子。

underscores_in_headers on;

server {
  listen 80;
  root /usr/share/nginx/html;
  index index.html index.htm;

  location /api/app/ {
    add_header "Access-Control-Expose-Headers" "Authorization";
    add_header "Access-Control-Allow-Headers" "Authorization";
    add_header "Authorization" "Something here, doesn't seem to matter what I put";
    try_files $uri $uri/ /api/app/index.html;
  }
}

添加到这个问题。我在我们的 Kubernetes 集群中运行了一个类似的构建。那个只是没有任何 add_header 行。集群正在使用 NGINX 入口。我在没有下划线的情况下将值硬编码到 Authorization 标头以进行测试。在集群中,除了 Authorization 之外,所有的 headers 都会传递给应用程序。

【问题讨论】:

  • 您的请求的响应码是什么?如果不添加 always 参数,add_header 将仅适用于 200、201、204、206、301、302、303、304 或 307
  • 响应代码总是返回 200。两个 Access 标头显示得很好,我尝试了其他几个运行良好的标头。它只是未填充的授权标头。我假设我错过了一些允许它的东西,但我还没有找到任何有帮助的东西。

标签: nginx nginx-config nginx-location


【解决方案1】:

事实证明,启动该项目的人并没有遵循实施模式。基本上它被设置为在进程开始时执行 window.open 并且在返回到该选项卡时会发生 URL 重定向。帮助我的高级开发人员注意到了这一点,并说这是问题的原因。

编辑:我对此进行的研究越多,我就越不相信我被告知的答案。这里实际上发生了一些事情。 第一,编写代码以便使用 POST 方法完成,以便他们可以编辑标题。他们尝试使用状态码 307 进行 URL 重定向,以便保留该方法。它没有这样做并给出 302 并更改为 GET。我相信这就是丢弃标题的原因。

另一个问题是 NGINX 会拒绝带有 405 的 POST。所以,这让我只需要扩展 HttpServletRequestWrapper 并制作一个可变的,这样我就可以在我相信的请求正文中添加标头。

http://wilddiary.com/adding-custom-headers-java-httpservletrequest/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-17
    • 2023-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-23
    • 2014-01-08
    • 2019-02-11
    相关资源
    最近更新 更多