这类似于我尚未回答的问题https://stackoverflow.com/questions/10825422/can-grails-redirect-command-be-told-to-respect-protocol-of-the-current-request,但在这种情况下,我只是想确保我向控制器指定的某些链接和表单操作是明确的https。我知道我可以手动构建这些链接,但这会破坏标签的目的,自动添加正确的主机名,应用程序路径等。
在一个完美的世界中,如果我在https页面上,链接将是相对的,如果不是,则是绝对的,但如果不可能,我将始终采用绝对链接。
由于
答案 0 :(得分:2)
这个请求有一个open jira。
我认为您可以创建自己的标记库来完成这项工作。只需拨打g.createLink
并将http替换为https。
class MyTagLib {
def secureLink = { attrs, body ->
def link = g.createLink(attrs)
out << link.replace('http','https')
}
}
答案 1 :(得分:0)
执行此操作的最快方法是在grails.serverURL
中配置Config.groovy
以使用https协议。然后在gsp form tags和链接标记中使用absolute="true"
。
答案 2 :(得分:0)
扩展Sergios解决方案,但强制绝对=“真”:
class MyTagLib {
def secureLink = { attrs, body ->
// forcing creation of an absolute url
attrs.absolute = 'true'
def link = g.createLink(attrs)
out << link.replaceFirst(/^http:/, 'https:')
}
}
或者对于你的“完美世界”场景,你可以试试这个:
class MyTagLib {
def secureLink = { attrs, body ->
if (!request.isSecure()) {
attrs.absolute = 'true'
def link = g.createLink(attrs)
out << link.replaceFirst(/^http:/, 'https:')
} else {
out << g.createLink(attrs)
}
}
}