在响应中设置Access-Control-Allow-Credentials标头

时间:2015-02-13 10:18:42

标签: google-app-engine go google-cloud-endpoints

我想将Cookie与go-endpoints一起使用。

为此,需要将Access-Control-Allow-Credentials设置为Header。

但是,不知道如何在go-endpoints中将Allow-Credentials设置为Header。

allowCookieAuth是,我该如何做到真实?

https://github.com/GoogleCloudPlatform/go-endpoints/search?utf8=%E2%9C%93&q=allowCookieAuth

因为go-endpoints处理程序没有http.ResponseWriter,所以无法设置Http Header。

func (gs *GreetingService) List(c endpoints.Context, r *GreetingsListReq) (*GreetingsList, error) {
    if r.Limit <= 0 {
        r.Limit = 10
    }

    q := datastore.NewQuery("Greeting").Limit(r.Limit)
    greets := make([]*Greeting, 0, r.Limit)
    keys, err := q.GetAll(c, &greets)
    if err != nil {
        return nil, err
    }

    for i, k := range keys {
        greets[i].Key = k
    }
    return &GreetingsList{greets}, nil
}

帮帮我!

2 个答案:

答案 0 :(得分:1)

如果我理解正确,那么你所要做的就是:

func yourHandler(w http.ResponseWriter, r *http.Request) {
    w.Header().Set("Access-Control-Allow-Credentials", "true")
    // ...other code
}

答案 1 :(得分:0)

通过修补端点,并达到目标。

dst.Auth = &struct {
        AllowCookie bool `json:"allowCookieAuth"`
    }{true}

https://github.com/sinmetal/go-endpoints/commit/25c0e85b06c13511291cb8b54f2878c5ac4587ad

但是,我不认为这是非常好的方式。 如果可能的话,我想在没有修补的情况下达到目标。