0

这类似于我尚未回答的问题https://stackoverflow.com/questions/10825422/can-grails-redirect-command-be-told-to-respect-protocol-of-the-current-request但在此如果我只是想确保我指定给控制器的某些链接和表单操作是明确的 https。我知道我可以手动构建这些链接,但这违背了标签自动添加正确主机名、应用程序路径等的目的。

在一个完美的世界中,如果我在 https 页面上,链接将是相对的,如果不是,则绝对链接,但如果不可能,我将始终采用绝对链接。

谢谢

4

3 回答 3

3

这个请求有一个开放的jira

我认为您可以创建自己的标签库来完成这项工作。只需调用g.createLink并将 http 替换为 https。

class MyTagLib {
  def secureLink = { attrs, body ->
    def link = g.createLink(attrs)
    out << link.replace('http','https')
  }
}
于 2012-06-13T21:28:59.007 回答
0

扩展 Sergios 解决方案,但强制 absolute="true":

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)
    }
  }
}
于 2013-10-08T19:53:57.670 回答
0

要做到这一点,最快的方法是将您的grails.serverURLin配置Config.groovy为使用 https 协议。然后absolute="true"在您的gsp 表单标签和链接标签中使用。

于 2012-06-13T20:40:32.150 回答