Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google app engine GAE Go用户服务登录url包含%A(缺少)_Google App Engine_Go - Fatal编程技术网

Google app engine GAE Go用户服务登录url包含%A(缺少)

Google app engine GAE Go用户服务登录url包含%A(缺少),google-app-engine,go,Google App Engine,Go,所以这个问题让我困惑了一段时间 控制台中有一些代码: 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

所以这个问题让我困惑了一段时间

控制台中有一些代码:

 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行直接来自开发者指南

格式错误:

如果为动词提供了无效参数,例如提供字符串 对于%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
所有错误都以字符串%开头!有时后面跟着一个 为动词添加字符,并以括号中的描述结尾

如果错误或字符串方法在被 在打印例行程序中,fmt包重新格式化来自 惊慌失措,用它通过fmt的迹象装饰它 包裹例如,如果字符串方法调用panicbad,则 生成的格式化消息如下所示

%s(PANIC=bad)
%s仅显示发生故障时正在使用的打印谓词

您的格式字符串无效。您有一个转义的URL查询字符串,其格式为string::转义为%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)
格式错误:

如果为动词提供了无效参数,例如提供字符串 对于%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
所有错误都以字符串%开头!有时后面跟着一个 为动词添加字符,并以括号中的描述结尾

如果错误或字符串方法在被 在打印例行程序中,fmt包重新格式化来自 惊慌失措,用它通过fmt的迹象装饰它 包裹例如,如果字符串方法调用panicbad,则 生成的格式化消息如下所示

%s(PANIC=bad)
%s仅显示发生故障时正在使用的打印谓词

您的格式字符串无效。您有一个转义的URL查询字符串,其格式为string::转义为%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)

那只是一张票!它还通过简单地使用fmt.Fprintfw,page_HTML而不是fmt.Fprintfw,%s,page_HTML来编写在别处生成的HTML来实现。当心人们。哦,哇,这正是我使用Fprintf时代码所发生的事情。您应该使用Fprint vs Fprintf来解决这个问题。fmt.Fprintw,page_htmlth那只是一张票!它还通过简单地使用fmt.Fprintfw,page_HTML而不是fmt.Fprintfw,%s,page_HTML来编写在别处生成的HTML来实现。当心人们。哦,哇,这正是我使用Fprintf时代码所发生的事情。您应该使用Fprint vs Fprintf来解决这个问题。例如:fmt.Fprintw,第页