如何在导入JSP中获取主机协议

时间:2016-05-29 01:06:14

标签: javascript java html css jsp

我的主应用程序中有两个JSP文件,一个是MAIN.jsp,另一个是CSS& JS import.jsp文件。

MAIN.jsp是主要应用程序的主页面.import.jsp文件将在MAIN.jsp文件中导入合作伙伴应用程序的CSS和JS,该文件用于支持与主应用程序作为合作伙伴的少数功能。

但是所有应用程序(主要和合作伙伴)都部署在同一台服务器上。所以基本上两个应用程序的主机名都不会改变,但单独的上下文根将会发生变化。

我使用jsp import标签导入MAIN.jsp中的import.jsp,如下面提到的代码。

main.jsp中

<html>
<head>
   <c:import url="resourceImport/import.jsp">
</head>
<body>
</body>
</html>

import.jsp

<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文件中获取协议的动态方式。我已经尝试了以下方法动态获取协议,但它无法正常工作。

方法1:

删除协议并将其设为相对网址

<head>
   <link url="//hostName/DifferentContext/example.css" rel="stylesheet" type="test/css">
   <script type="text/javascript" src="//hostName/DifferentContext/sample.js" > </script> 
</head>

方法2

删除协议和主机名并使其成为相对URL

<head>
   <link url="//DifferentContext/example.css" rel="stylesheet" type="test/css">
   <script type="text/javascript" src="//DifferentContext/sample.js" > </script> 
</head>

所以,请你帮助我解决这个问题。

1 个答案:

答案 0 :(得分:0)

如果有任何值得使用https(这些日子),我会选择减少麻烦,只需去https 到处

不再担心,没有意外的信息泄漏和协议变更。维护更容易,以后不会更新,无意中会带回错误的协议链接。

选中HSTS作为选项,强制合规浏览器在将来不再使用任何http连接尝试。

话虽这么说,相对链接是保持相同协议的另一种方式,可能是有益的:您很少想将域名硬编码到您的应用程序中 - 根据您在应用程序中使用的编程风格,您可能会想要使用页面相对链接(../DifferentContext/example.css)或服务器相对链接(/DifferentContext/example.css)。协议相对也很好,但硬编码域名。

另一种选择是使该位置完全可配置。这样您可以稍后决定(前提是您已将所有出现次数更改为已配置的值):${config.theOtherAppBaseUrl}/example.css。有了这个,您可以在10分钟内自己尝试所有不同的选项。当你得出结论认为值得到处去https时,你会改变主意。

(注意:您的问题代码中存在问题:最后一个链接指的是//DifferentContext....,它会假设DifferentContext是主机名 - 这是一个协议相对URL)