nginx - NGinx 发送 307 而不是 401
问题描述
随着时间的推移,我使用了几个反向代理,但 NGinx 的行为让我大吃一惊。在使用 HAProxy(作为 K8s Ingress)多年后,我最近不得不使用 NGinx,但我一直没有看到任何解决方案。
从一开始,会话丢失时的行为就不同了。HTTP 401 会告诉客户端(单页 JavaScript 应用程序)通知用户会话丢失并且他/她必须重新登录。它没有将 401 发送到浏览器,而是将 307 发送到登录页面,并带有错误的动词 (POST),因为 401 失败的请求是 POST 请求。
排除故障的最佳方法是隔离,因此我从存储库(Linux Mint 20)安装了版本,并在 /etc/nginx/conf.d 中注册了一个简单的反向代理条目
server {
listen 80;
location / {
proxy_pass http://localhost:8080;
}
}
不幸的是(或幸运的是)这个问题马上就显现出来了:一旦我删除了 cookie 并且服务器发送 401“请登录”,浏览器就会在请求中显示 307,该请求以 401 失败。
预期行为:
- 浏览器发送“POST /ping”
- 浏览器收到“401 on /ping”
当前行为:
- 浏览器发送“POST /ping”
- 浏览器收到“307 /auth”,然后使用 POST 执行 /auth(不确定它如何知道 /auth 是登录页面)
知道如何禁用此行为吗?
解决方案
推荐阅读
- java - 如何格式化和比较来自 bash/vm 的输入?
- c# - 使用 dapper 中的存储过程在 C# 中自动生成发票编号
- ios - 从 ruby gem 导出的 GraphQL 查询无法在 Xcode 项目上使用 Apollo 进行编译
- r - 省略列而不是将它们放入 purrr
- vtk - vtkRenderingOpenGL2-8.2.lib 中的 vtk LNK 错误
- python-3.x - 如何在 asyncio 实例中创建持久变量?
- c++ - 如何为使用 AKOscillatorBank 演奏的每个音符设置随机相位?
- javascript - 是否可以使用快速路由的正则表达式中的捕获组?
- c# - 从 c# 到 php 的 3DES 加密
- haskell - 如何使用 Haskell 从对称闭包中找到所有等效元素?