【发布时间】:2018-06-28 16:10:53
【问题描述】:
问题定义
在我的页面 www.xxx.com/page 上有一个脚本:
<script type="text/javascript" src="main.1234.js"></script>
浏览器将其重新定位为 www.xxx.com/main.1234.js 而不是 www.xxx.com/page/main.1234.js
有关我的设置的更多详细信息
实际上,在同一台服务器机器上运行着两个应用程序:
- www.xxx.com/(应用 #1)
- www.xxx.com:82/(应用 #2)
该页面实际上存在于应用程序 #2 中,即 www.xxx.com:82/page。如果我直接访问该页面,则一切正常(即浏览器按预期解析链接)。
但我的设置有点复杂。我的目标是从任何公共访问中隐藏应用程序 #2,并使其仅通过应用程序 #1 作为 www.xxx.com/page 可用。为了实现这一点,我设置了应用程序 #1,如果用户请求 www.xxx.com/page,则应用程序 #1 在后台执行对应用程序 #2 的 www.xxx.com:82/page 的请求并将接收到的内容返回给用户。
从用户的角度来看,一切都应该看起来像 www.xxx.com:82/page 的内容位于 www.xxx.com/page 下。它几乎可以工作。唯一的问题是,由于某种原因,浏览器解析了我在“问题定义”中描述的 URL。 如何解决?
补充信息,希望对您有所帮助
我想,答案应该隐藏在响应中。我想,原因是浏览器接收到不同的响应标头。以下是浏览器在这两种情况下收到的标头列表:
- 来自应用程序 #1 (www.xxx.com/page) 的响应,其中浏览器错误地解析了 URL:
- 缓存控制:私有
- 内容长度:775
- 内容类型:text/html;charset=UTF-8
- 日期:格林威治标准时间 2018 年 1 月 19 日星期五 11:34:40
- 到期时间:周四,1970 年 1 月 1 日 00:00:00 UTC
- 设置-Cookie:zimidy-initialSessionIdHash=-226086716;路径=/
- 严格的传输安全性:max-age=31536000;包括子域
- X-Content-Type-Options:nosniff
- X-Frame-Options:SAMEORIGIN
- X-XSS-保护:1;模式=块
- 来自浏览器正确解析 URL 的应用 #2 (www.xxx.com:82/page) 的响应:
- 接受范围:字节
- Cache-Control:public, max-age=0
- 连接:保持活动状态
- 日期:格林威治标准时间 2018 年 1 月 19 日星期五 11:33:16
- ETag:W/"307-1610e1964c4"
- 最后修改时间:格林威治标准时间 2018 年 1 月 19 日星期五 11:06:40
- X-Powered-By:Express
【问题讨论】:
-
你试过
src="/main.1234.js"></script>吗? -
url 解析正确。关心这里的斜杠:www.xxx.com/page -> www.xxx.com/page/
-
@RolandStarke 哇!结束斜线确实有帮助!从没想过这很重要。您能否发表评论,为什么它很重要以及它如何影响行为?如果您发表评论作为答案,我会接受。谢谢!
标签: javascript java url browser client-side