跨域通信golang后端配置与前端浏览器检测

浏览器对跨域访问的接口一般会阻止,后端配置允许跨域的例外,一般接口对应的handler中增加header的配置,常用如下:

func Handle(rw http.ResponseWriter, req *http.Request) {
//支持跨域
rw.Header().Set("Access-Control-Allow-Origin", "*")
rw.Header().Set("Access-Control-Allow-Credentials", "true")
rw.Header().Set("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS")
  ...
}

如果对应多个handler使用那么可以将上述配置提取成单独的函数

func enableCors(w *http.ResponseWriter) {
    (*w).Header().Set("Access-Control-Allow-Origin", "*")
    (*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")
}

接口发布后可以在任意浏览器的console中进行测试,将open( method , url) 中的参数替换为自己的实际要使用跨域的方法和地址即可:

var xhr = new XMLHttpRequest();
xhr.open('POST', 'http://localhost:8080/login');
xhr.send(null);
xhr.onload = function(e) {
  var xhr = e.target;
  console.log(xhr.responseText);
}

参考: Enabling CORS on a Go Web Server 本机测试跨域问题的浏览器控制台代码 用Go实现CORS跨域资源共享的服务器支持

本文链接:参与评论 »

--EOF--

提醒:本文最后更新于 1238 天前,文中所描述的信息可能已发生改变,请谨慎使用。

Comments