4

我在客户端使用 beego 框架作为我的 API 框架和 AngularJS。我已正确设置所有 CORS 设置。我可以做 GET 请求。但是,当我尝试发布时,beego 对待是作为 OPTIONS 请求。它还会发出警告:multiple response.WriteHeader calls. 什么可能是错的?

我的beego CORS设置:

func init() {
    orm.RegisterDataBase("default", "mysql", "root:@tcp(127.0.0.1:3306)/fakeapi")
    beego.InsertFilter("*", beego.BeforeRouter, cors.Allow(&cors.Options{
        AllowOrigins:     []string{"*"},
        AllowMethods:     []string{"GET", "DELETE", "PUT", "PATCH", "POST"},
        AllowHeaders:     []string{"Origin"},
        ExposeHeaders:    []string{"Content-Length"},
        AllowCredentials: true,
    }))

}

我的 AngularJS 请求

var transaction = $http.post(BASE_URL + "transaction", transactionData);
                return $q.all([transaction]).then(function(response) {
            console.log(response);
        });

我的系统:Ubuntu 14.04 beego:1.4.2 bee:1.2.4 angularJS:1.3.12

4

2 回答 2

2

这可能是因为当前等待合并到 master 中的 issue/pull 请求:issue 912

没有这条线一切都很好:: router.go#L861

这似乎与提交 3bb4d6f 一致,其中显示:

// Write status code if it has been set manually
// Set it to 0 afterwards to prevent "multiple response.WriteHeader calls"

(并router.go设置状态,因此出现错误消息)

提交 f962457应该可以解决此问题,但尚未合并。


另一个问题 904提到无法检索先前在会话引擎中注册的会话数据。也许Session.on 标志可以提供帮助。

于 2015-02-05T06:54:40.717 回答
0

我就是这样处理的,希望对你有帮助

import (
_ "info_apoyo/routers"

"github.com/astaxie/beego"
"github.com/astaxie/beego/plugins/cors"
)

func main() {
if beego.BConfig.RunMode == "dev" {
    beego.BConfig.WebConfig.DirectoryIndex = true
    beego.BConfig.WebConfig.StaticDir["/swagger"] = "swagger"
}
beego.InsertFilter("*", beego.BeforeRouter, cors.Allow(&cors.Options{
    AllowOrigins:     []string{"*"},
    AllowMethods:     []string{"GET", "POST", "DELETE", "PUT", "PATCH"},
    AllowHeaders:     []string{"Origin", "content-type", "Access-Control-
Allow-Origin"},
    ExposeHeaders:    []string{"Content-Length", "Access-Control-Allow-
Origin"},
    AllowCredentials: true,
}))
beego.Run()
}
于 2018-01-04T15:34:53.030 回答