tomcat 8上的Oracle Ords在URL中隐藏模式名称



我不希望用户能够在ORD URL中看到上下文或模式名称。

如《甲骨文》文档中的我的URL是这样的:

https://server:port/ords/workspace/hr/employees/7369

请注意架构名称,HR存在。我的目标是隐藏Ords,Workspace和HR。所以我的URL应该是:

https://server:port/redirect_name/employees/7369

我不想要的是http 301重定向,该重定向更新浏览器栏。

尝试了

1(root中的urlrewriteFilter,但带有type ="重定向",它仅重定向并泄漏上下文。如果没有类型="重定向"产生"不可用的资源。"从tomcat中显然甚至没有到达Ords。

2(JSP重定向

<% response.sendRedirect("/some/where"); %>

成功重定向但泄漏上下文。

3(tomcat"重写阀"再次相同的结果成功301型重定向。

未尝试

1(带有apache httpd实例的前猫。

答案仅适用于ORDS 3.0.9。README描述:

  • 错误:25072243-修复回归防止ORD的URL映射启用模式,如果PL/SQL网关池不存在

没有,我不相信这将起作用(未进行测试(。请注意,如果从ORDS 3.0.6或更早开始升级,DB模式已更改,则需要升级。

这不是一个完整的答案,但它是我设法获得的最接近的答案。首先将ords.war文件重命名为所需的redirect_name.war这将自动为数据库连接创建新的配置目录,但尚未设置。选项是安装redirect_name.war使用:

java -jar redirect_name.war install simple

或通过手动编辑配置文件以匹配您已经拥有的ORDS设置。有两种方法可以找到配置目录

java -jar redirect_name.war configdir

将为您提供配置目录,或者您可以在:

中检查它
.webappsredirect_nameWEB-INFweb.xml

使用PARAM名称,假设Tomcat配置为解开战争,否则在压缩战争档案中查看。

在这一点上,URL与此相反:

https://server:port/ords/workspace/hr/employees/7369

https://server:port/redirect_name/workspace/hr/employees/7369

下一步是设置一个可以使用:

完成的MAP-url
java -jar redirect_name.war mapurl --type base-path --workspace-id hr / apex

或通过手动创建上面发现的url-mapping.xml文件。如果您手动创建文件,应该看起来像这样:

<?xml version="1.0" encoding="UTF-8"?>
<pool-config xmlns="http://xmlns.oracle.com/apex/pool-config">
   <pool name="apex" base-path="/" workspace-id="hr" updated="2017-01-01T01:01:01.012Z"/>
</pool-config>

池名称" APEX"是默认已安装的数据库名称。您可以通过检查/conf/subdirectory在默认安装中查看ORDS中设置了哪些数据库名称,您将找到一个名为apex_pu.xml描述数据库连接的文件。如果您想连接到可以完成的其他数据库(更多此处(:

java -jar redirect_name.war setup --database ords_db_name

将引导您浏览一系列提示,以输入服务名称或SID。请注意,在此处提示时必须选择1:

Enter 1 if you want to verify/install Oracle REST Data Services schema or 2 to skip this step [1]

或不会创建数据库连接。要验证成功检查/conf位置并查找ords_db_name_pu.xml请注意,ORDS_DB_NAME只是ORDS使用的数据库连接名称,它不必是实际的SID或服务名称。

这些步骤将使URL从中间步骤降低:

https://server:port/redirect_name/workspace/hr/employees/7369

https://server:port/redirect_name/workspace/employees/7369

url-mapping.xml/mapurl选项,with/删除了任何名称的需求。或者可以使用此命令:

java -jar redirect_name.war mapurl --type base-path --workspace-id hr /something_here apex

产生此URL:

https://server:port/redirect_name/workspace/something_here/employees/7369

未测试

重命名ords.war to root。理论上的war消除了在URL中对" redirect_name"的需求,但我不准备将ORD在根位置。

最新更新