繁体   English   中英

GAE Go用户服务登录网址包含%A(MISSING)

[英]GAE Go user service login url contains %A(MISSING)

所以这让我感到困惑了一段时间!

这是控制台中的一些代码:

 func GetLoginLinks(w *http.ResponseWriter, r *http.Request) (string, error) {
    c := appengine.NewContext(r)
    u := user.Current(c)
    if u == nil {
        url, err := user.LoginURL(c, r.URL.String())
        if err != nil {
            http.Error(*w, err.Error(), http.StatusInternalServerError)
            return "", err
        }

        c.Debugf("Return url: " + r.URL.String())
        c.Debugf("login url: " + url)
        c.Debugf("url type: %T", url)
        v := LoginItem(url, "Login")
        return v, nil
    }
 }

它给出以下输出:

2013/06/17 21:48:28 DEBUG: Return url: /
2013/06/17 21:48:28 DEBUG: login url: /_ah/login?continue=http%A(MISSING)//localhost%A(MISSING)8080/
2013/06/17 21:48:28 DEBUG: url type: string

将其上传到应用程序引擎本身时,也会失败。

我苦苦挣扎的是该函数的前4行直接来自开发人员指南。

软件包fmt

格式错误:

如果为动词给出了无效的参数,例如为%d提供了一个字符串,则生成的字符串将包含问题的描述,如以下示例所示:

 Wrong type or unknown verb: %!verb(type=value) Printf("%d", hi): %!d(string=hi) Too many arguments: %!(EXTRA type=value) Printf("hi", "guys"): hi%!(EXTRA string=guys) Too few arguments: %!verb(MISSING) Printf("hi%d"): hi %!d(MISSING) Non-int for width or precision: %!(BADWIDTH) or %!(BADPREC) Printf("%*s", 4.5, "hi"): %!(BADWIDTH)hi Printf("%.*s", 4.5, "hi"): %!(BADPREC)hi 

所有错误均以字符串"%!"开头"%!" 有时后面跟一个字符(动词),并以括号括起来。

如果ErrorString方法在由打印例程调用时触发了panic情况,则fmt软件包会重新格式化来自紧急情况的错误消息,并用表明它来自fmt软件包的指示来装饰它。 例如,如果String方法调用panic("bad") ,则格式化后的消息看起来像

 %s(PANIC=bad) 

发生故障时, %s仅显示正在使用的打印动词。

您的格式字符串无效。 您具有格式字符串的转义URL查询字符串:“ : ”转义为“ %3A ”。 %3A ”动词的格式参数丢失。 为了安全起见,切勿使用任意字符串作为格式字符串。 例如,

package main

import "fmt"

func main() {
    url := "/_ah/login?continue=http%3A//localhost%3A8080/"
    fmt.Printf("login url: " + url)
    fmt.Println()
    fmt.Printf("login url: %s", url)
    fmt.Println()
}

输出:

login url: /_ah/login?continue=http%A(MISSING)//localhost%A(MISSING)8080/
login url: /_ah/login?continue=http%3A//localhost%3A8080/

写:

c.Debugf("login url: %s", url)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM