日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

go+cookie+angular踩过的坑

發布時間:2023/12/20 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 go+cookie+angular踩过的坑 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

出現問題

  • go后端在設置路由的時候,響應頭設置帶有cookie。但是angular向該接口發起post請求的時候,返回的數據沒有cookie

原因和解決辦法

  • cookie在跨域請求的時候,會丟失。因此我們在angular項目中設置代理

解決

  • go后端代碼

    • 后端功能:接收angular向SetCookie接口發起的post請求數據,將該數據轉化為cookie值
    package mainimport (? "net/http"? "io/ioutil"? "encoding/json"? "fmt")type UpLoadMes struct{? Text string? Picture []string}type Login struct {? Name string `json:"name"`? Num string `json:"num"`}func main(){? fmt.Println("正在監聽8080......")? http.HandleFunc("/SetCookie",SetCookie)? http.ListenAndServe(":8080",nil)}func SetCookie(w http.ResponseWriter, r *http.Request){? if r.Method!="POST"{? fmt.Println(r.Method)? return? }? w.Header().Set("Access-Control-Allow-Origin", "*")? w.Header().Add("Access-Control-Allow-Headers", "Content-Type")? w.Header().Set("content-type", "application/json")? w.Header().Set("content-type", "application/x-www-form-urlencoded")? body,err:=ioutil.ReadAll(r.Body)? defer r.Body.Close()? if err!=nil{? panic(err)? }? var loginData Login? err=json.Unmarshal(body,&loginData)? if err!=nil{? panic(err)? }? fmt.Println(loginData)? cookie := http.Cookie{Name: loginData.Name, Value:loginData.Num, MaxAge: 60}//MaxAge表示cookie能存活的時間? w.Header().Set("Set-Cookie",cookie.String())? data := make(map[string]string)? data["name"] = loginData.Name? json,err := json.Marshal(data)? if err!=nil{? panic(err)? }? w.Write(json)}
  • angular項目中設置代理

    • 在項目生成名字為proxy.conf.json的代理文件

  • 在該文件寫入

    {"/test":{"target":"http://localhost:8080","sercure":false,"logLevel":"debug","changeOrigin":true,"pathRewrite":{"^/test":""}} }
  • 在angular.json文件中寫入

  • angular發起請求部分

    loginSubmit(name:string,num:string){if(name==null||name==undefined){console.error("onSubmit name有誤")return}if(num==null||num==undefined){console.error("onSubmit num有誤")return}if(name==""&&num==""){console.error("name and num 都是空的")return}var httpOptions={headers:new HttpHeaders({'content-Type':'application/x-www-form-urlencoded'}),}var api="/test/SetCookie"// /test/SetCookie 相當于 http://localhost:8080//SetCookiereturn this.http.post(api,{"name":name,"num":num},httpOptions).pipe(catchError(this.handleError))}

注意

  • 根據上面設計之后,在cookie的有效期內,angular發起的大部分的請求都會帶上cookie

轉載于:https://www.cnblogs.com/MyUniverse/p/11496571.html

總結

以上是生活随笔為你收集整理的go+cookie+angular踩过的坑的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。