jwt中用到的Bearer,在某些ios会报错
Leadrive opened this issue · comments
Leadrive commented
在某些IOS上,前端访问faygo时,会报SyntaxError DOM Exception 12的错误。
原因是出在jwt中,token的设置带了一个空格。
可以参考
http://www.blogjava.net/laxxx/archive/2015/12/17/428705.html
问题的重现,可以在网上下载黑雷苹果模拟器,该模拟器带的Safira,刚好可以重现此问题。
我的解决办法是用/代替空格,或者二者都支持,当然需要修改下jwt.go的代码
func (mw *FaygoJWTMiddleware) jwtFromHeader(ctx *faygo.Context, key string) (string, error) {
authHeader := ctx.HeaderParam(key)
if authHeader == "" {
return "", ErrEmptyAuthHeader
}
// faygo.Debug("jwtFromHeader:", authHeader)
// ios某些版本,有空格的话,会报SyntaxError DOM Exception 12
parts := strings.SplitN(authHeader, " ", 2)
if len(parts) == 2 && parts[0] == mw.TokenHeadName {
return parts[1], nil
}
parts = strings.SplitN(authHeader, "/", 2)
if !(len(parts) == 2 && parts[0] == mw.TokenHeadName) {
return "", ErrInvalidAuthHeader
}
return parts[1], nil
}
Leadrive commented
提交了PR