我的主应用程序中有两个JSP文件,一个是MAIN.jsp,另一个是CSS& JS import.jsp文件。
MAIN.jsp是主要应用程序的主页面.import.jsp文件将在MAIN.jsp文件中导入合作伙伴应用程序的CSS和JS,该文件用于支持与主应用程序作为合作伙伴的少数功能。
但是所有应用程序(主要和合作伙伴)都部署在同一台服务器上。所以基本上两个应用程序的主机名都不会改变,但单独的上下文根将会发生变化。
我使用jsp import标签导入MAIN.jsp中的import.jsp,如下面提到的代码。
<html>
<head>
<c:import url="resourceImport/import.jsp">
</head>
<body>
</body>
</html>
<html>
<head>
<link url="http://hostName/DifferentContext/example.css" rel="stylesheet" type="test/css">
<script type="text/javascript" src="http://hostName/DifferentContext/sample.js" > </script>
</head>
<body>
</body>
</html>
目前我已经在import.jsp中对合作伙伴HTTP URL进行了硬编码,以便加载MAIN.jsp文件中的所有资源。 但是我们正在计划在HTTP和HTTPS环境中运行应用程序。
那么我怎样才能使它成为在import.jsp文件中获取协议的动态方式。我已经尝试了以下方法动态获取协议,但它无法正常工作。
删除协议并将其设为相对网址
<head>
<link url="//hostName/DifferentContext/example.css" rel="stylesheet" type="test/css">
<script type="text/javascript" src="//hostName/DifferentContext/sample.js" > </script>
</head>
删除协议和主机名并使其成为相对URL
<head>
<link url="//DifferentContext/example.css" rel="stylesheet" type="test/css">
<script type="text/javascript" src="//DifferentContext/sample.js" > </script>
</head>
所以,请你帮助我解决这个问题。
答案 0 :(得分:0)
如果有任何值得使用https(这些日子是),我会选择减少麻烦,只需去https 到处。
不再担心,没有意外的信息泄漏和协议变更。维护更容易,以后不会更新,无意中会带回错误的协议链接。
选中HSTS作为选项,强制合规浏览器在将来不再使用任何http连接尝试。
话虽这么说,相对链接是保持相同协议的另一种方式,可能是有益的:您很少想将域名硬编码到您的应用程序中 - 根据您在应用程序中使用的编程风格,您可能会想要使用页面相对链接(../DifferentContext/example.css
)或服务器相对链接(/DifferentContext/example.css
)。协议相对也很好,但硬编码域名。
另一种选择是使该位置完全可配置。这样您可以稍后决定(前提是您已将所有出现次数更改为已配置的值):${config.theOtherAppBaseUrl}/example.css
。有了这个,您可以在10分钟内自己尝试所有不同的选项。当你得出结论认为值得到处去https时,你会改变主意。
(注意:您的问题代码中存在问题:最后一个链接指的是//DifferentContext....
,它会假设DifferentContext是主机名 - 这是一个协议相对URL)