HTTPS Grails应用程序URL

时间:2014-01-03 12:01:42

标签: grails https

我的Grails应用程序通过HTTPS运行,并在Config.groovy中设置:

environments {
    development {
        grails.serverURL = "https://localhost:8443/foo"
    }
}

当我执行grails run-app以在开发模式下启动应用程序时,控制台上打印的最后一条消息是:

  

服务器正在运行。浏览到http://localhost:8082/foo

如果我不小心点击此URL访问该应用程序,由于同源安全策略,我会收到各种错误(因为https://localhost:8443是与http://localhost:8082不同的主机。)

为什么当我设置http://localhost:8082/foo时,Grails会提示我通过grails.serverURL = "https://localhost:8443/foo"访问我的应用

更新

我将启动命令更改为grails run-app -https,控制台上打印的最后一条消息现在是:

  

服务器正在运行。浏览到http://localhost:8082/foohttps://localhost:8443/foo

为什么我可以选择HTTP或HTTPS,而不仅仅是后者?此外,我在启动期间遇到此异常:

http11.Http11Protocol Failed to initialize end point associated with ProtocolHandler ["http-bio-8443"]
java.net.BindException: Address already in use <null>:8443
    at org.apache.tomcat.util.net.JIoEndpoint.bind(JIoEndpoint.java:407)

我在运行此命令之前检查了端口8443是否正在使用(它不是),但是服务器似乎启动了,尽管有这个例外,所以这不是主要问题。

3 个答案:

答案 0 :(得分:3)

将grails.serverURL替换为以下代码。

可以使用以下system properties设置端口:

grails.server.port = 8082

这应该适用于http和https。仅配置一个:

grails.server.port.https = 8082

答案 1 :(得分:1)

您需要使用--https参数来运行Grails的app,以便在开发模式下响应HTTPS和HTTP。至少根据documentation

尝试使用

grails run-app --https

此外,grails.serverURL通常由taglib和插件使用,而不是我所知道的启动过程。

答案 2 :(得分:1)

您可以在BuildConfig.groovy中通过https设置要运行应用程序的ssl端口。您可以将以下内容添加到BuildConfig.groovy

//You can specify another port here to get rid of your startup exception grails.server.port.https="8443"
grails.server.host="localhost"

然后尝试 grails run-app -https ,您应该可以在您定义的ssl端口或默认的8080端口上运行您的应用