AWS Cloudfront对名称中带有“ +”的文件签名的cookie失败

问题描述

如果我尝试为名称中带有“ +”字符的文件生成签名的cookie,则在应用程序中将看不到该文件。

我使用以下代码生成Cookie:

func GenerateCookie(ctx *gin.Context,userID string) error {
    privKey,err := sign.LoadPEMPrivKeyFile(os.Getenv("AWS_KEY"))
    if err != nil {
        return err
    }
    cs := sign.NewCookieSigner(os.Getenv("AWS_KEY_CLOUDFRONT"),privKey)
    expire := time.Now().UTC().Add(2 * time.Hour)
    policy := &sign.Policy{
        Statements: []sign.Statement{
            {
                Resource: os.Getenv("CLOUDFRONT_DOMAIN") + "/" + userID + "/*",Condition: sign.Condition{
                    DateLessThan: &sign.AWSEpochTime{Time: expire},},}
    cookies,err := cs.SignWithPolicy(policy)
    if err != nil {
        return err
    }
    maxage := int(expire.Unix() - time.Now().Unix())
    for _,c := range cookies {
        ctx.SetCookie(c.Name,c.Value,maxage,"/",os.Getenv("DOMAIN"),util.GetIsSecureCookie(),true)
    }
    return err
}

我该如何解决?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)