【发布时间】:2014-01-03 12:01:41
【问题描述】:
我的 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 是不同的主机),我会收到各种错误。
为什么当我设置了grails.serverURL = "https://localhost:8443/foo" 时,Grails 会提示我通过http://localhost:8082/foo 访问我的应用程序
更新
我把启动命令改成了grails run-app -https,现在控制台上打印的最后一条消息是:
服务器正在运行。浏览至
http://localhost:8082/foo或https://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 是否正在使用(不是),但尽管出现此异常,服务器似乎仍在启动,因此这不是主要问题。
【问题讨论】: