好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > go 原生http web 服務跨域restful api的寫法介紹

go 原生http web 服務跨域restful api的寫法介紹

熱門標簽:百度地圖標注后傳給手機 涿州代理外呼系統 壽光微信地圖標注 excel地圖標注分布數據 外呼系統顯本地手機號 阿克蘇地圖標注 評價高的400電話辦理 外呼系統用什么卡 電話機器人軟件免費

錯誤寫法

func main() {
    openHttpListen()
}
func openHttpListen() {
    http.HandleFunc("/", receiveClientRequest)
    fmt.Println("go server start running...")
    err := http.ListenAndServe(":9090", nil)
    if err != nil {
        log.Fatal("ListenAndServe: ", err)
    }
}
func receiveClientRequest(w http.ResponseWriter, r *http.Request) {
    w.Header().Set("Access-Control-Allow-Origin", "*")             //允許訪問所有域
    w.Header().Add("Access-Control-Allow-Headers", "Content-Type") //header的類型
    w.Header().Set("content-type", "application/json")             //返回數據格式是json
    r.ParseForm()
    fmt.Println("收到客戶端請求: ", r.Form)

這樣還是會報錯:

說沒有得到響應跨域的頭,chrome的network中確實沒有響應Access-Control-Allow-Origin

正確寫法:

func LDNS(w http.ResponseWriter, req *http.Request) {
    if origin := req.Header.Get("Origin"); origin != "" {
        w.Header().Set("Access-Control-Allow-Origin", 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")
    }
    if req.Method == "OPTIONS" {
        return
    }
    // 響應http code
    w.WriteHeader(200)
    query := strings.Split(req.Host, ".")
    value, err := ldns.RAMDBMgr.Get(query[0])
    fmt.Println("Access-Control-Allow-Origin", "*")
    if err != nil {
        io.WriteString(w, `{"message": ""}`)
        return
    }
    io.WriteString(w, value)
}

補充:go http允許跨域

1.創建中間件

import (
 "github.com/gin-gonic/gin"
 "net/http"
)
// 跨域中間件
func Cors() gin.HandlerFunc {
 return func(c *gin.Context) {
  method := c.Request.Method
  origin := c.Request.Header.Get("Origin")
  if origin != "" {
   c.Header("Access-Control-Allow-Origin", origin)
   c.Header("Access-Control-Allow-Methods", "POST, GET, OPTIONS, PUT, DELETE, UPDATE")
   c.Header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization")
   c.Header("Access-Control-Expose-Headers", "Content-Length, Access-Control-Allow-Origin, Access-Control-Allow-Headers, Cache-Control, Content-Language, Content-Type")
   c.Header("Access-Control-Allow-Credentials", "false")
   c.Set("content-type", "application/json")
  }
  if method == "OPTIONS" {
   c.AbortWithStatus(http.StatusNoContent)
  }
  c.Next()
 }
}

2.在route中引用中間件

router := gin.Default()
// 要在路由組之前全局使用「跨域中間件」, 否則OPTIONS會返回404
router.Use(Cors())

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • Django開發RESTful API實現增刪改查(入門級)
  • Django restful framework生成API文檔過程詳解
  • Django JWT Token RestfulAPI用戶認證詳解
  • Python利用Django如何寫restful api接口詳解
  • 詳解Django rest_framework實現RESTful API
  • 詳解Go語言RESTful JSON API創建
  • 基于Go語言構建RESTful API服務

標簽:蘭州 吐魯番 梅河口 汕頭 重慶 銅川 雞西 欽州

巨人網絡通訊聲明:本文標題《go 原生http web 服務跨域restful api的寫法介紹》,本文關鍵詞  原生,http,web,服務,跨域,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《go 原生http web 服務跨域restful api的寫法介紹》相關的同類信息!
  • 本頁收集關于go 原生http web 服務跨域restful api的寫法介紹的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 肥胖老太婆7777久久久| 中文乱码字字幕在线第5页| 成品网站短视频源码搭建免费| 男同在线观看未删减| 肉奴隶赤坂丽| 日本a级在线| 精品毛片一区二区三区| 别揉我?啊?嗯~喷水了三人行| 91精品国产色综合久久不卡蜜| 郑厅长玩韩蕊第一次| 欧美在线视| 欧美AV人人妻AV人人爽成人网| 亚洲欧美18v中文字幕高清| 日韩爱爱视频| 英语老师解开裙子让我添| 国产成人无码A片V99麻豆| 很污很黄很肉尺寸大动态图| 17gay少爷ktv直播| 艳母手机在线观看| 精品国产a∨无码一区二区免费| 国产精品无码丰满熟妇区久久 | 女主奶大耐不住np高干| 老头巨大粗长xxxxx| 亚洲福利国产精品17p| 亚洲va久久久久| 超踫视频97人人视频费免费| 国产一区亚洲二区三区达达兔 | 爽到高潮漏水大喷视频| 欧美人与禽x0x0牲伦交| 办公室秘书的滋味k8| 成人毛片儿??九幺看片| 亚洲欧美视频二区| 777国产| 一个人在家用黄瓜还是杏鲍菇 | 日本一本二本三本视频在线观看| 动漫艹逼视频| 国产在线一区二区三区视频| 八蜜凛AV无码正在播放| 操美女骚b| 重口婴交h小黄文| 极品嫩妇20p|