Kubernetes nginx入口控制器CORS由应用程序处理
我正在努力让NGINX从我的应用程序来回代理CORS头。允许的来源由我的ASP.NET Web应用程序指定,我希望将这些头代理回客户端。在Kubernetes外部运行的应用程序可以完美地处理CORS头,因此应用程序似乎正确配置了CORS。据我所知,Kubernetes NGINX ingress控制器似乎不允许我这样做 我想继续允许我的应用程序处理允许的来源,因此我只需要配置NGINX反向代理来传递所有头。查看文档,默认情况下,Kubernetes nginx入口控制器CORS由应用程序处理,nginx,iis,kubernetes,cors,windows-container,Nginx,Iis,Kubernetes,Cors,Windows Container,我正在努力让NGINX从我的应用程序来回代理CORS头。允许的来源由我的ASP.NET Web应用程序指定,我希望将这些头代理回客户端。在Kubernetes外部运行的应用程序可以完美地处理CORS头,因此应用程序似乎正确配置了CORS。据我所知,Kubernetes NGINX ingress控制器似乎不允许我这样做 我想继续允许我的应用程序处理允许的来源,因此我只需要配置NGINX反向代理来传递所有头。查看文档,默认情况下,proxy\u pass\u request\u headers设置
proxy\u pass\u request\u headers
设置为on
。我以前对NGINX的理解是,当代理到另一台服务器时,为了使头能够前后传递,需要使用此配置设置
注释启用cors
和文档中概述的cors周围的各种配置选项对我来说用处不大,因为它们假设入口控制器是允许来源的真实来源。就我而言,事实并非如此
我本以为这是一个允许应用程序处理CORS的常见请求,但我很难找到解决此问题的方法
非常感谢任何人能提供的任何帮助
更新-添加图表
我创建了一个小图表,其中包含了我对拓扑的理解。这可能是一个过于简单的过程,但希望你能理解我试图实现更容易。
所以这实际上与我遇到的其他一些问题有关。毕竟,CORS头并没有被剥离。我怀疑在进行了大量调试之后,CORS模块没有在典型的IIS容器中配置。这是第一个问题 对于那些感兴趣的人,这里有DockerFile行,用于添加CORS with Chocolate:
RUN Set-ExecutionPolicy Bypass -Scope Process -Force; `
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; `
iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1')); `
choco install iis-cors-module -y
Kubernetes NGINX并没有剥离头文件,事实上,它正常代理了所有头文件
如果将来有其他人遇到类似问题,还有一些有趣的小道消息:
- ASP.NET应用程序确实不喜欢使用反向代理。可能还有其他问题会在稍后引起他们的注意,但首先,当返回WebForms页面时,他们会检查名为
的属性(可能MVC也会发生类似的情况)。脚本通常被设置为与它假定的方案相匹配(http而不是https)。这会在现代浏览器中导致错误。有关此信息,请参阅以下SO帖子:IsSecureConnection
- 在你做了这些之后,如果你运气不好,在你的网站上嵌入了这些控件,那么我们会有一些可爱的Telerik胡说八道。Telerik(Progress)以其无限的智慧为HTTPS CDN链接使用不同的URL。这不能很好地升级。以下论坛在这里帮助了我: