gpt4 book ai didi

java - 使用play作为代理服务器时如何重写绝对路径?

转载 作者:太空宇宙 更新时间:2023-11-04 14:17:57 25 4
gpt4 key购买 nike

我正在尝试使用 play (Java - 2.3) 作为代理服务器来公开公开来自内部 HTTP 服务器的内容。

到目前为止,我设法获得了我想要显示的大部分内容,但不幸的是,一些样式表和脚本是使用绝对路径引用的,当然,我得到的唯一结果是 404。

是否有解决方法,或者我应该要求其他开发人员更改这些文件的路径?

我的路线文件如下所示:

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;
}

编辑:我有一些脚本和样式表:

<link rel="stylesheet" type="text/css" href="/fs/style.css">
<script type="text/javascript" src="/fs/js/jquery-1.9.1.min.js"></script>

由于它们主要位于同一个 Assets 文件夹(“/fs/”)中,因此我可以映射所有文件夹,但这需要在每次其他团队的开发人员更改某些内容时更新我的​​ Play 路线文件资源被组织/存储。恕我直言,这不是一个很好的解决方案,但我可以接受。

我最大的问题是几个 jquery ajax 调用,它们主要请求如下网址:

$.ajax({
url: "/query",
processData: false,
data: xmlDocument
});

$.ajax({
url: "/queryall",
processData: false,
data: xmlDocument
});

任何帮助将不胜感激,谢谢。

最佳答案

最后我决定寻求更实用的解决方案:我要求其他开发人员更改所有 ajax 查询并使用所有相同的 URI 模式。

通过这种方式,我在路由文件上创建了一些不同的路由,具体取决于我必须转发的资源/调用的类型:

我有类似的东西:

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;
}

对于 html 页面和

GET     /$file<.*\.js$>                       controllers.gateway.TestProxy.js(file)

用于 js 文件。 Controller 与上面的 Controller 相同,除了响应内容类型当然是“text/javascript”。

关于 AJAX 查询,它们现在都位于同一路径下,并且我遵循完全相同的机制。

感谢 @m-z 抽出时间。

关于java - 使用play作为代理服务器时如何重写绝对路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27503081/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com