小编Cyr*_*ôte的帖子

玩!框架:Router.getFullUrl("action")和Router.reverse("action")之间有什么区别.absolute()?

我的Play上需要一个绝对的URL!1.2.4应用程序作为OAuth身份验证的回调(使用Scribe.

我的应用程序在Apache虚拟代理后面运行,可通过带有"http://myapp.mydomain.com"等子域的URL访问,代理"http://127.0.0.1:9000".ProxyPreserveHost设置为On.在我的游戏!应用程序配置,我有以下属性:application.baseUrl=http://myapp.mydomain.com/.

为了计算这个绝对URL,我使用了一段代码,如:

Router.ActionDefinition ad = Router.reverse("Controller.callback");
ad.absolute();
return ad.url;
Run Code Online (Sandbox Code Playgroud)

这段代码适用于Play!1.2.3:它返回"http://myapp.mydomain.com/callback".

现在我用Play了!1.2.4,此代码现在返回"http://www.mydomain.com:9000/callback"(由虚拟代理翻译的URL没有子域名),就好像Play!现在使用HTTP请求的URL来构建此绝对URL.

我凭经验将这个代码替换为Router.getFullUrl("Controller.callback"),这解决了我的问题.

这两种方法Router.getFullUrl()Router.absolute()没有记录(booo!),我想知道解决我的问题的微妙差异.我想Router.absolute()使用当前的HTTP请求来构建绝对URL,并Router.getFullUrl()使用application.baseUrl配置属性.我也可能有Apache配置问题(因为它显然不是我的技能之一!),但是ProxyPreserveHost设置为On,我认为我的虚拟代理对Play来说是透明的!应用程序,我不明白为什么它从Play切换时出现!1.2.3至1.2.4.

谢谢你的帮助.

apache2 playframework

5
推荐指数
1
解决办法
1350
查看次数

标签 统计

apache2 ×1

playframework ×1