Как разделить куки между поддоменами в beego frameworks - PullRequest
0 голосов
/ 28 мая 2018

Мы намерены установить cookie для * .1234tv.com в login.1234tv.com.Однако это не работает.

enter image description here

Я настроил контейнер следующим образом:

beego.InsertFilter("*", beego.BeforeRouter, cors.Allow(&cors.Options{
    AllowAllOrigins: true,
    AllowOrigins:     []string{"http://*.1234tv.com"},
    AllowMethods:    []string{"GET", "POST", "PUT", "DELETE","PATCH","HEAD", "OPTIONS"},
    AllowHeaders:    []string{"Origin", "Authorization", "Access-Control-Allow-Origin", "Content-Type"},
    ExposeHeaders:   []string{"Content-Length", "Access-Control-Allow-Origin"},
    AllowCredentials: true,
}))

и установил cookie в контроллере какэто:

this.Ctx.SetCookie("UNION_TOKEN", utoken, 3600*24*7,"/", ".1234tv.com",false,false)

Ответы [ 2 ]

0 голосов
/ 07 июля 2018

Я нашел решение этого вопроса

beego.InsertFilter("*",beego.BeforeRouter,func(ctx *context.Context) {
        ctx.ResponseWriter.Header().Add("Access-Control-Allow-Origin", "*")
        ctx.ResponseWriter.Header().Add("Access-Control-Allow-Credentials", "true")
    })

, если вы хотите отправить cookie в http, используйте "http://XX" вместо" * ", или вы можете установить" Access-Control "-Allow-Origin "отдельно в API, например:

beego.InsertFilter("*",beego.BeforeRouter,func(ctx *context.Context) {
        ctx.ResponseWriter.Header().Add("Access-Control-Allow-Origin", "*")
        ctx.ResponseWriter.Header().Add("Access-Control-Allow-Credentials", "true")
    })

func (c *ArticleController)AddArticle(){
    c.Ctx.ResponseWriter.Header().Set("Access-Control-Allow-Origin", "http://XX")
}

$.ajax( {
   ...
   xhrFields: {
     withCredentials: true
   }
 });
0 голосов
/ 29 мая 2018

Причина в том, что set-cookie по ответу не работает.1. Так как это запрос Ajax между сайтами, .withCredentials () может активировать возможность установки cookie по ответу.

$.ajax( {
   /* Setup the call */
   xhrFields: {
     withCredentials: true
   }
 });

2. На стороне сервера ответа "Access-Control-Allow-Credentials" должно быть«true» и «Access-Control-Allow-Origin» не должны быть «*», а «Access-Control-Allow-Origin» может быть «http://*.domain.com».

...