golang实现跨域访问的方法

  

前端通过Ajax来获取服务器资源时,会存在跨域问题。因为Ajax只能同源使用(预防某些恶意行为),所以当访问不在同一个域中的资源时,就会出现跨域限制。尤其在开发和测试时,跨域问题会给前端测试带来非常不便。

  

不过歌珥(跨源资源共享、跨域资源共享)解决了这个问题,它背后的基本思想的是:使用自定义的HTTP头部让浏览器与服务器进行沟通,从而决定请求或响应是否应该成功.CORS需要浏览器和服务器同时支持。整个歌珥通信过程,浏览器是自动完成,而服务器需要手动配置。

  

ajax。         & lt; !doctype html>   & lt; html lang=癳n”比;   & lt; head>   & lt;元charset=皍tf - 8”比;   & lt; meta name=" viewport "   内容="宽度=设备宽度,user-scalable=不,初始=1.0,最大范围=1.0,最小规模=1.0”比;   & lt;元http-equiv=癤-UA-Compatible”内容=癷e=边缘”比;   & lt; script>   loadXMLDoc函数(){   var xmlhttp;   如果(window.XMLHttpRequest) {   xmlhttp=new XMLHttpRequest ();   }   其他{   xmlhttp=new ActiveXObject (“Microsoft.XMLHTTP”);   }   xmlhttp。onreadystatechange=function () {   如果(xmlhttp。readyState==4,,xmlhttp。状态==200){   . getelementbyid (“myDiv”)。innerHTML=xmlhttp.responseText;   }   }   xmlhttp。开放(“获得”、“http://127.0.0.1:8000 ajax”,真正的);   xmlhttp.send ();   }   & lt;/script>   & lt; title> Document   & lt;/head>   & lt; body>   & lt; h3>交叉origin   & lt;按钮类型=鞍磁ァ痹谇肭笫? lt;/button>   & lt; div id=" myDiv "祝辞& lt;/div>   & lt;/body>   & lt;/html>      

crossorigin.go         主要包      导入(   “net/http”   “html/模板”   “fmt”   “编码/json”   )      类型消息结构体{   名称字符串的json:“名字”   味精字符串的json:“味精”   }      函数main () {   http。入口HandleFunc (“/?   http。TestCrossOrigin HandleFunc (“/ajax”)   http。nil ListenAndServe (“8000”)   }      函数入口(w http。ResponseWriter r * http.Request) {   t, _:=template.ParseFiles(“模板/ajax。”)   t。执行(w, nil)   }      func TestCrossOrigin http (w。ResponseWriter r * http.Request) {   如果r。方法==暗玫健眥   var消息消息   消息。Name=" benben_2015 "   消息。味精="成功"      因此,犯错:=json.Marshal(消息)   如果犯错!=nil {   fmt.Println (err)   返回   }   ResponseWithOrigin (w, r, http。StatusOK,结果)   返回   }   }   func ResponseWithOrigin http (w。ResponseWriter r * http。请求,json代码int[]字节){   w.Header ()。集(“内容类型”、“application/json;charset=utf - 8”)   w.WriteHeader(代码)   w.Write (json)   }      

当从http://localhost: 8000/页面(ajax。)通过ajax访问http://localhost: 8000/ajax时,就会出现下图所示的错误:

  

 golang实现跨域访问的方法”>,</p>
  <p> <>强解决方法:</强> golang设置HTTP头部相当简单,标准包有现成的方法可以使用。只要在服务器端的响应头中添加下面一句代码就可以正常访问了。</p>
  
  <pre类=   w.Header ()。集(“Access-Control-Allow-Origin”、“*”)//?”表示接受任意域名的请求,这个值也可以根据自己需要,设置成不同域名      

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

golang实现跨域访问的方法