答案:通过配置CORS响应头或使用中间件解决Golang Web服务跨域问题。具体包括设置Access-Control-Allow-Origin、Methods、Headers和Credentials,并处理OPTIONS预检请求,可借助gorilla/handlers库或手动实现中间件。

在使用 Golang 构建 Web 服务时,前端如果通过不同源(协议、域名、端口任一不同)访问后端接口,就会遇到跨域问题。浏览器出于安全考虑会阻止这类请求,除非后端正确配置 CORS(跨域资源共享)。解决这个问题的关键是在 HTTP 响应头中添加必要的 CORS 相关字段。
要让浏览器接受跨域请求,服务器需设置以下几个关键响应头:
最简单的方式是使用成熟的中间件库 github.com/gorilla/handlers,它提供了开箱即用的 CORS 支持。
安装依赖:
立即学习“go语言免费学习笔记(深入)”;
go get github.com/gorilla/handlers示例代码:
package main这段代码启用 CORS,并限制只允许来自 http://localhost:3000 的请求,支持常见方法和头部。
如果你不想引入额外依赖,也可以自己写一个简单的 CORS 中间件:
func corsMiddleware(next http.Handler) http.Handler {使用方式:
r := mux.NewRouter()注意:预检请求(OPTIONS)由中间件直接处理,避免转发到实际业务逻辑。
如果前端需要携带 Cookie 或使用 withCredentials: true,后端必须明确设置凭据支持且不能使用通配符。
正确做法:
w.Header().Set("Access-Control-Allow-Origin", "http://localhost:3000")此时 Origin 必须是具体地址,不能为 *,否则浏览器会拒绝响应。
基本上就这些。根据项目情况选择使用库或手写中间件,关键是把响应头写对,并妥善处理 OPTIONS 预检请求。以上就是Golang如何实现跨域资源共享CORS的详细内容,更多请关注php中文网其它相关文章!
 
                        
                        每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
 
                 
                                
                                 收藏
收藏
                                                                             
                                
                                 收藏
收藏
                                                                             
                                
                                 收藏
收藏
                                                                            Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号