为了账号安全,请及时绑定邮箱和手机立即绑定

将 Angular 表单提交到 Go API 不断发布 Nil

将 Angular 表单提交到 Go API 不断发布 Nil

Go
梵蒂冈之花 2023-06-12 17:21:36
我正在尝试从我的 Angular 前端发布到我的 Go API,无论我做什么,它都会将 nil 发布到 Go API。当我测试变量是否发送到 Angular 订阅者时,它显示它们是,但由于某种原因它不会发布到这个简单的 Go 端点这是我的代码任何帮助将不胜感激:去APIpackage mainimport (    "encoding/json"    "fmt"    "github.com/dgrijalva/jwt-go"    "log"    "net/http"    "time")func main() {    http.HandleFunc("/signin", indexHandler)    http.HandleFunc("/welcome", Welcome)    http.HandleFunc("/refresh", Refresh)    // start the server on port 8000    log.Fatal(http.ListenAndServe(":8001", nil))}func setupResponse(w *http.ResponseWriter, req *http.Request) {    (*w).Header().Set("Access-Control-Allow-Origin", "*")    (*w).Header().Set("Access-Control-Allow-Methods", "POST, GET, OPTIONS, PUT, DELETE")    (*w).Header().Set("Access-Control-Allow-Headers", "Accept, Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token, Authorization")}func indexHandler(w http.ResponseWriter, req *http.Request) {    setupResponse(&w, req)    if (*req).Method == "POST" {        return    }    fmt.Println(req.Header)    fmt.Println(req.ParseForm())    fmt.Println(json.NewDecoder(req.Body))}这是我在 Go 中的输出map[User-Agent:[Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Mobile Safari/537.36] Access-Control-Request-Headers:[ access-control-allow-headers,access-control-allow-origin,content-type] Referer:[ http://localhost:4200/login?returnUrl=%2Fdashboard]接受语言:[en-US,en;q =0.9] 连接:[keep-alive] 接受:[ / ] 接受编码:[gzip, deflate, br] 访问控制请求方法:[POST] 来源:[ http://localhost:4200]] & {{} [] {[] 0 { false [] false 0 0} { false [] false 0 0} { } false false} 0 0 { false [] false 0 0} 0 []}然后我在 Angular 中收到一个 CORS 错误,它是:从来源“ http://localhost: 4200 ”访问位于“ http://localhost: 8001/signin ”的 XMLHttpRequest 已被 CORS 策略阻止:Access-Control 不允许请求标头字段 access-control-allow-origin -在飞行前响应中允许标头。如果有人能帮助我,我将不胜感激。我是 Go 和 Angular 的新手,并且仍在学习如何让它们相互交互。
查看完整描述

1 回答

?
BIG阳

TA贡献1859条经验 获得超6个赞

像这样进行更改:


func indexHandler(w http.ResponseWriter, req *http.Request) {

    setupResponse(&w, req)

    if (*req).Method == "POST" {

          fmt.Println(req.Header)


          fmt.Println(req.ParseForm())

          fmt.Println(json.NewDecoder(req.Body))

    }

}

角度客户端


login(username: string, password: string) {


    const httpOptions = {

      headers: new HttpHeaders({ 'Content-Type': 'application/json charset=utf-8'})

    };

   return this.http.post(`${environment.APIEndpoint}/signin`, `{"username":username, "password":password}`, httpOptions).pipe(map(user => {

        // login successful if there's a jwt token in the response

        if (user && user) {

          // store user details and jwt token in local storage to keep user logged in between page refreshes

          localStorage.setItem('currentUser', JSON.stringify(user));

        }


        return user;

      }));

  }


查看完整回答
反对 回复 2023-06-12
  • 1 回答
  • 0 关注
  • 102 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信