我有以下安排:浏览器 -> 转发代理 -> 云 ->(apache 服务器 + jira web 应用程序)。 出于实验目的,我使用域名 fwdproxy.foo.com 转到转发代理,然后转发代理将其更改为 jira.foo.com 并转发连接。当我加载 jira 页面时,出现错误 “JIRA 报告它在主机名‘jira.foo.com’上运行,这与用于运行这些诊断的主机名‘fwdproxy.foo.com’不匹配。已知这会导致 JIRA 构建URL 使用不正确的主机名,这将导致仪表板出现错误,以及其他问题。
在进一步调试时我看到了这个 com.atlassian.gadgets.dashboard.internal.diagnostics.UrlHostnameMismatchException:检测到的 URL 主机名“jira.foo.com”与预期的主机名 fwdproxy.foo.com 不匹配。
jira web 应用程序如何知道浏览器使用的主机名。由于转发代理创建了一个完全不同的 http 连接,jira 不应该知道浏览器在转发代理后面做了什么。请提供意见。谢谢
最佳答案
只有 2 个想法:
你可以配置 JIRA,给他公共(public) url (Administration/Global configuration/base url)
我想 JIRA 将此字段与 HOST http header 进行比较,或者使用 antoher 机制,一种 XSS 保护,也许是 atlassian.xsrf.token ?
关于tomcat - 在代理后面的 tomcat 上运行的 servlet 如何知道浏览器向其发送请求的服务器名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21241805/