Java 当使用play作为代理服务器时,如何重写绝对路径?
我正在尝试使用PlayJava-2.3作为代理服务器公开公开来自内部HTTP服务器的内容 到目前为止,我设法获得了我想要显示的大部分内容,但不幸的是,一些样式表和脚本是使用绝对路径引用的,当然,我只得到了404 是否有解决方法,或者我应该要求其他开发人员更改这些文件的路径 我的路由文件如下所示:Java 当使用play作为代理服务器时,如何重写绝对路径?,java,playframework,Java,Playframework,我正在尝试使用PlayJava-2.3作为代理服务器公开公开来自内部HTTP服务器的内容 到目前为止,我设法获得了我想要显示的大部分内容,但不幸的是,一些样式表和脚本是使用绝对路径引用的,当然,我只得到了404 是否有解决方法,或者我应该要求其他开发人员更改这些文件的路径 我的路由文件如下所示: GET /proxy/*path controllers.gateway.TestProxy.index(path) 我使用以下方法转发内容:
GET /proxy/*path controllers.gateway.TestProxy.index(path)
我使用以下方法转发内容:
public static Promise<Result> index(String path) {
final Promise<Result> resultPromise = WS.url("http://10.1.0.10:18406/"+path).get().map(
new Function<WSResponse, Result>() {
public Result apply(WSResponse response) {
response().setContentType("text/html");
return ok(response.getBody());
}
}
);
return resultPromise;
}
或
任何帮助都将不胜感激,
谢谢。最后,我决定寻求更实用的解决方案: 我要求其他开发人员更改所有ajax查询并使用相同的URI模式 通过这种方式,我在路由文件中创建了几个不同的路由,这取决于我必须转发的资源/呼叫的类型: 我有点像:
GET / controllers.gateway.TestProxy.index()
及
对于html页面和
GET /$file<.*\.js$> controllers.gateway.TestProxy.js(file)
对于js文件。
除了响应内容类型(当然是text/javascript)之外,控制器与上面的控制器相同
关于AJAX查询,它们现在都在相同的路径下,我遵循完全相同的机制
谢谢@m-z的时间。你能举一个你想重写的绝对路径的例子吗?嘿,@m-z我编辑了这个问题。仍然不清楚。。应该/查询到http://10.1.0.10:18406/query ? 您是否在询问如何处理不以/proxy开头的路由?我不知道你希望它有什么样的行为。
$.ajax({
url: "/queryall",
processData: false,
data: xmlDocument
});
GET / controllers.gateway.TestProxy.index()
public static Promise<Result> index() {
final Promise<Result> resultPromise = WS.url("http://10.1.0.10:18406/").get().map(
new Function<WSResponse, Result>() {
public Result apply(WSResponse response) {
response().setContentType("text/html");
return ok(response.getBody());
}
}
);
return resultPromise;
}
GET /$file<.*\.js$> controllers.gateway.TestProxy.js(file)