如何建立一个从https到http的链接?

sto*_*jke 6 playframework

我的页面上有这个链接(第1页):

<a href="@{Controller.action1().secure()}">Link1</a> 
Run Code Online (Sandbox Code Playgroud)

通过https将我带到页面(第2页).如何在第2页上建立一个链接,让我从https回到http?我认为@@ notation可以解决这个问题:

<a href="@@{Controller.action2()}">Link2</a>
Run Code Online (Sandbox Code Playgroud)

但它没有,action2也通过https调用.

Ale*_*nko 3

Play 没有与 secure() 相反的方法,但您可以使用自定义 JavaExtension 自己实现它:

import play.templates.JavaExtensions;
import play.mvc.Router.ActionDefinition;

public class MyExtensions extends play.templates.JavaExtensions {

    public static String unsecure(ActionDefinition action) {
            if (!action.url.contains("http://") && !action.url.contains("https://")) {
                action.absolute();
            }
            action.url = action.url.replace("https:", "http:");
            return action.url;
        } 
Run Code Online (Sandbox Code Playgroud)

自定义扩展方法应返回String,并且参数将保存增强对象,如文档所示该代码与安全方法的代码几乎相同。

通过这种方法,您现在可以使用:

href="@{Controller.action2().unsecure()}"
Run Code Online (Sandbox Code Playgroud)