wuyongxiu / wuyongxiu.github.io

随便记录一下......
http://wuyongxiu.github.io
6 stars 3 forks source link

go语言解决浏览器跨域问题 #37

Open wuyongxiu opened 6 years ago

wuyongxiu commented 6 years ago

1 跨域简介

跨域产生的原因,什么是跨域,如何解决跨域,可以参考阮一峰写的博文:http://www.ruanyifeng.com/blog/2016/04/cors.html

2 chrome浏览器模拟跨域

打开chrome浏览器,F12打开console控制台,可以在里面写xml http request代码了。
如图,发送简单请求给不允许跨域的服务器(对于这种简单请求浏览器不会发送预检请求,而是直接发送真正的请求)。可以再修改请求来模拟非简单请求。
default

3 go语言服务器解决跨域问题

可以参考代码 https://github.com/rs/cors
具体流程是判断跨域请求是否是预检请求,如果是预检请求,则处理预检请求,否则处理实际请求。
if r.Method == "OPTIONS" && r.Header.Get("Access-Control-Request-Method") != "" { c.logf("HandlerFunc: Preflight request") c.handlePreflight(w, r) } else { c.logf("HandlerFunc: Actual request") c.handleActualRequest(w, r) }

hunterhug commented 6 years ago

弱哦

wuyongxiu commented 6 years ago

哪里弱?