一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Golang - golang實現(xiàn)跨域訪問的方法

golang實現(xiàn)跨域訪問的方法

2020-05-22 09:44benben_2015 Golang

這篇文章主要介紹了golang實現(xiàn)跨域訪問的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

前端通過Ajax來獲取服務器資源時,會存在跨域問題。因為Ajax只能同源使用(預防某些惡意行為),所以當訪問不在同一個域中的資源時,就會出現(xiàn)跨域限制。尤其在開發(fā)和測試時,跨域問題會給前端測試帶來非常不便。

不過CORS(Cross-Origin Resource Sharing,跨域資源共享)解決了這個問題,它背后的基本思想是:使用自定義的HTTP頭部讓瀏覽器與服務器進行溝通,從而決定請求或響應是否應該成功。CORS需要瀏覽器和服務器同時支持。整個CORS通信過程,瀏覽器是自動完成,而服務器需要手動配置。

ajax.html

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<!doctype html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport"
     content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <script>
    function loadXMLDoc() {
      var xmlhttp;
      if (window.XMLHttpRequest) {
        xmlhttp = new XMLHttpRequest();
      }
      else {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
      }
      xmlhttp.onreadystatechange = function () {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
          document.getElementById("myDiv").innerHTML = xmlhttp.responseText;
        }
      }
      xmlhttp.open("GET", "http://127.0.0.1:8000/ajax", true);
      xmlhttp.send();
    }
  </script>
  <title>Document</title>
</head>
<body>
  <h2>cross origin</h2>
  <button type="button" onclick="loadXMLDoc()">請求數(shù)據(jù)</button>
  <div id="myDiv"></div>
</body>
</html>

crossorigin.go

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
package main
 
import (
  "net/http"
  "html/template"
  "fmt"
  "encoding/json"
)
 
type Message struct {
  Name string `json:"name"`
  Msg string `json:"msg"`
}
 
func main() {
  http.HandleFunc("/", Entrance)
  http.HandleFunc("/ajax", TestCrossOrigin)
  http.ListenAndServe(":8000", nil)
}
 
func Entrance(w http.ResponseWriter, r *http.Request) {
  t,_:=template.ParseFiles("templates/ajax.html")
  t.Execute(w, nil)
}
 
func TestCrossOrigin(w http.ResponseWriter, r *http.Request) {
  if r.Method == "GET" {
    var message Message
    message.Name = "benben_2015"
    message.Msg = "success"
 
    result, err := json.Marshal(message)
    if err != nil {
      fmt.Println(err)
      return
    }
    ResponseWithOrigin(w, r, http.StatusOK, result)
    return
  }
}
func ResponseWithOrigin(w http.ResponseWriter, r *http.Request, code int, json []byte) {
  w.Header().Set("Content-Type", "application/json; charset=utf-8")
  w.WriteHeader(code)
  w.Write(json)
}

當從 http://localhost:8000/ 頁面(ajax.html)通過ajax訪問 http://localhost:8000/ajax 時,就會出現(xiàn)下圖所示的錯誤:

golang實現(xiàn)跨域訪問的方法

解決方法: golang設置HTTP頭部相當簡單,標準包有現(xiàn)成的方法可以使用。只要在服務器端的響應頭中添加下面一句代碼就可以正常訪問了。

?
1
2
w.Header().Set("Access-Control-Allow-Origin", "*")
//"*"表示接受任意域名的請求,這個值也可以根據(jù)自己需要,設置成不同域名

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://blog.csdn.net/benben_2015/article/details/79247024

延伸 · 閱讀

精彩推薦
  • Golanggo日志系統(tǒng)logrus顯示文件和行號的操作

    go日志系統(tǒng)logrus顯示文件和行號的操作

    這篇文章主要介紹了go日志系統(tǒng)logrus顯示文件和行號的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧...

    SmallQinYan12302021-02-02
  • GolangGolang中Bit數(shù)組的實現(xiàn)方式

    Golang中Bit數(shù)組的實現(xiàn)方式

    這篇文章主要介紹了Golang中Bit數(shù)組的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧...

    天易獨尊11682021-06-09
  • Golanggolang 通過ssh代理連接mysql的操作

    golang 通過ssh代理連接mysql的操作

    這篇文章主要介紹了golang 通過ssh代理連接mysql的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧...

    a165861639710342021-03-08
  • Golanggo語言制作端口掃描器

    go語言制作端口掃描器

    本文給大家分享的是使用go語言編寫的TCP端口掃描器,可以選擇IP范圍,掃描的端口,以及多線程,有需要的小伙伴可以參考下。 ...

    腳本之家3642020-04-25
  • Golanggolang如何使用struct的tag屬性的詳細介紹

    golang如何使用struct的tag屬性的詳細介紹

    這篇文章主要介紹了golang如何使用struct的tag屬性的詳細介紹,從例子說起,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看...

    Go語言中文網(wǎng)11352020-05-21
  • Golanggolang的httpserver優(yōu)雅重啟方法詳解

    golang的httpserver優(yōu)雅重啟方法詳解

    這篇文章主要給大家介紹了關于golang的httpserver優(yōu)雅重啟的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,...

    helight2992020-05-14
  • Golanggolang json.Marshal 特殊html字符被轉義的解決方法

    golang json.Marshal 特殊html字符被轉義的解決方法

    今天小編就為大家分享一篇golang json.Marshal 特殊html字符被轉義的解決方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧 ...

    李浩的life12792020-05-27
  • GolangGolang通脈之數(shù)據(jù)類型詳情

    Golang通脈之數(shù)據(jù)類型詳情

    這篇文章主要介紹了Golang通脈之數(shù)據(jù)類型,在編程語言中標識符就是定義的具有某種意義的詞,比如變量名、常量名、函數(shù)名等等,Go語言中標識符允許由...

    4272021-11-24
主站蜘蛛池模板: 国产欧美日韩专区 | 国产黑丝一区 | 俺来操| 特黄a大片免费视频 | 国产在线播放91 | 欧美精品一国产成人性影视 | 亚洲乱亚洲乱妇41p 亚洲乱码一区二区三区国产精品 | 四虎影视永久在线精品免费 | 国内精品久久久久香蕉 | 爱爱调教 | 日本久久免费大片 | 亚洲29p| 超强台风免费观看完整版视频 | japonensis日本护士 | 亚洲视频在线观看免费 | 国产99精品视频 | 久见久热 这里只有精品 | 国产日韩在线 | 亚洲精品乱码久久久久久蜜桃 | 美女的隐私无遮挡的网页 | 好大好爽好涨太深了小喜 | 国产福利一区二区精品视频 | 十六一下岁女子毛片免费 | 射逼网| xxxx野外性xxxx | 村上里沙40分钟在线观看 | 天天综合天天综合色在线 | 久久xxxx | 日本中文字幕黑人借宿影片 | 娇妻被健身教练挺进小说阅读 | 亚洲免费视频播放 | 超91精品手机国产在线 | 2020韩国r级理论片在线观看 | 97午夜视频 | 天天操天天干天天 | 午夜成私人影院在线观看 | 日韩精品亚洲专区在线影视 | 日韩欧美一区二区三区 | 亚洲毛片免费看 | 蜜桃影像传媒破解版 | 亚洲成a人不卡在线观看 |