go语言解决跨域的问题图片显示问题
来源:http://www.shanhubei.com/archives/2838.html
直接上代码
package main import ( "fmt" "io/ioutil" "net/http" ) //获取C的图片数据 func ReadImgData(url string) []byte { resp, err := http.Get(url) if err != nil { panic(err) } defer resp.Body.Close() pix, err := ioutil.ReadAll(resp.Body) if err != nil { panic(err) } return pix } func myWeb(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 query := r.URL.Query(); var url string; var name string; if len(query["url"]) > 0{ url = query["url"][0] }else { fmt.Fprintf(w, ""); return ; } if len(query["name"]) > 0{ name = query["name"][0]; w.Header().Set("content-type", "application/octet-stream") w.Header().Set("Content-Disposition", "attachment; filename=" + name) } fmt.Println(url,name); pix := ReadImgData(url); w.Write(pix ) //fmt.Fprintf(w, "这是一个开始"); } func main() { http.HandleFunc("/", myWeb) fmt.Println("服务器即将开启,访问地址 http://localhost:3000") err := http.ListenAndServe(":3000", nil) if err != nil { fmt.Println("服务器开启错误: ", err) } }
调用方式:
<img src="http://localhost:3000?url=http%3A%2F%2Fhbimg.b0.upaiyun.com%2F32f065b3afb3fb36b75a5cbc90051b1050e1e6b6e199-Ml6q9F_fw320&name=test.jpg" >
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?