本文详解因端口不同导致的跨域资源共享(cors)问题,指导你在 go 后端服务中正确添加 `access-control-allow-origin` 等响应头,使前端(如 dropzone)能成功向 `http://localhost:9090/receive` 发起 post 请求。
当你通过 Nginx(运行在 https://www./link/e91d9d8a18bc230d88e9241865958431)提供 HTML 页面,而该页面中的 Dropzone 组件尝试向 Go 服务(http://localhost:9090/receive)发起 POST 文件上传请求时,浏览器会触发 跨域资源共享(CORS)预检机制。尽管协议(http)和主机名(localhost)相同,但端口 9009 ≠ 9090,已构成不同源(RFC 6454 §5),因此浏览器拒绝响应——除非后端明确允许。
要解决此问题,需在 Go 服务的 HTTP 处理器中添加标准 CORS 响应头。以下是推荐的轻量级实现方式(无需第三方库):
func receiveHandler(w http.ResponseWriter, r *http.Request) {
// 允许指定源(开发环境可设为 "*",生产环境建议精确指定)
w.Header().Set("
Access-Control-Allow-Origin", "https://www./link/e91d9d8a18bc230d88e9241865958431")
// 允许携带凭证(如 cookies、Authorization header),若需则开启;注意:此时 Origin 不能为 "*"
// w.Header().Set("Access-Control-Allow-Credentials", "true")
w.Header().Set("Access-Control-Allow-Methods", "POST, OPTIONS")
w.Header().Set("Access-Control-Allow-Headers", "Content-Type, X-Requested-With")
// 处理预检请求(OPTIONS)
if r.Method == "OPTIONS" {
w.WriteHeader(http.StatusOK)
return
}
// 实际业务逻辑:处理文件上传
if r.Method != "POST" {
http.Error(w, "Method not allowed", http.StatusMethodNotAllowed)
return
}
// 示例:解析 multipart 表单
err := r.ParseMultipartForm(32 << 20) // 32MB max memory
if err != nil {
http.Error(w, "Unable to parse form", http.StatusBadRequest)
return
}
// ... 处理文件、保存等逻辑
w.WriteHeader(http.StatusOK)
w.Write([]byte("Upload received"))
}⚠️ 关键注意事项:
完成上述配置后,重启 Go 服务,刷新页面并重新上传,即可消除 No 'Access-Control-Allow-Origin' header is present 错误,实现跨端口安全通信。
# html
# 前端
# go
# nginx
# cookie
# 处理器
# 浏览器
# app
# access
# 端口
# usb
# 后端
# 跨域
# 开发环境
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
网络优化76771 】
【
技术知识130152 】
【
IDC云计算60162 】
【
营销推广131313 】
【
AI优化88182 】
【
百度推广37138 】
【
网站推荐60173 】
【
精选阅读31334 】
相关推荐:
WindowsUSB驱动安装异常怎么办_USB驱动重建与恢复教程
c++ namespace命名空间用法_c++避免命名冲突
Win11怎么快速锁屏_Win11一键锁屏快捷键Win+L【基础】
php和redis连接超时怎么办_phpredis调试连接问题汇总【指南】
Win11怎么关闭触摸键盘图标_Windows11任务栏系统托盘设置
电脑的“网络和共享中心”去哪了_Windows 11新版网络设置指南【新手】
Windows怎样拦截QQ浏览器广告_Windows拦截QQ浏览器广告方法【方法】
如何在 Django 中修改用户密码后保持会话不丢失
C++如何使用std::optional?(处理可选值)
如何使用Golang开发简单的聊天室消息存储_Golang WebSocket数据持久化方法
Windows服务无法启动错误1067是什么_进程意外终止的解决方法
Win11如何隐藏桌面图标 Win11一键隐藏/显示桌面图标【指南】
Python文件管理规范_工程实践说明【指导】
如何在Golang中使用container/heap实现堆_Golang container/heap最小堆方法
Windows系统被恶意软件破坏后的恢复策略_错误提示修复方式
如何在 Go 中高效缓存与分发网络视频流
如何在 VS Code 中正确配置并使用 NumPy
php485在php5.6下能用吗_php485旧版本兼容性问题说明【详解】
php转exe用什么工具打包快_高效打包软件推荐【汇总】
Python文件和流处理指南_高效读写大体积数据文件
如何诊断并终止卡死的 multiprocessing 子进程
Python日志系统设计与实现_高可观测性架构实战
如何在Windows上设置闹钟和计时器_系统自带的时钟应用全攻略【生活技巧】
如何使用Golang实现Web表单数据绑定_自动映射字段到结构体
php怎么操作Redis_Redis扩展连接与基本命令使用方法【方法】
如何解决同一段404代码在不同主机上表现不一致的问题
Win11怎么查看已连接wifi密码 Win11查已连wifi密码步骤【教程】
Win11怎么设置默认输入法 Win11固定中文输入法【步骤】
Win10闹钟铃声怎么自定义 Win10闹钟自定义铃声教程【方法】
Win11怎么设置环境变量_Win11配置Path路径变量【详解】
Win11怎么关闭通知中心_Windows11系统通知与专注助手设置
Mac如何修改Hosts文件?(本地开发与屏蔽网站)
Win11任务栏颜色怎么改_Win11自定义任务栏配色设置【美化】
Win11声音忽大忽小怎么办 Win11音频增强功能关闭教程【修复】
如何使用Golang实现跨域请求支持_Golang CORS配置与处理方法
Win11怎么设置ip地址_Windows 11手动配置网络IP教程【详解】
php485函数执行慢怎么优化_php485性能提升小技巧【技巧】
Windows10怎么卸载预装软件_Windows10预装软件卸载步骤【教程】
Win11无法安装软件怎么办_Win11解除应用安装限制设置【修复】
Python代码测试策略_质量保障解析【教程】
如何使用Golang搭建Web开发环境_快速启动HTTP服务
Windows10如何更改桌面背景_Win10个性化幻灯片放映设置
Windows怎样关闭锁屏广告_Windows关闭锁屏广告方法【教程】
Win11键盘快捷键大全_Windows 11常用高效快捷键汇总【技巧】
Python随机数生成_random模块说明【指导】
Win11快速助手怎么用_Win11远程协助连接教程【工具】
c++中explicit(bool)的用法 c++条件性explicit【C++20】
Win11怎么更改输入法顺序_Win11调整语言首选位置【设置】
本地php环境出现502错误_nginx或apache502badgateway解决技巧【解答】
如何在Golang中使用time处理时间_Golang time时间解析与格式化方法
2026-01-04
致胜网络推广营销网专注海外推广十年,是谷歌推广.Facebook广告全球合作伙伴,我们精英化的技术团队为企业提供谷歌海外推广+外贸网站建设+网站维护运营+Google SEO优化+社交营销为您提供一站式海外营销服务。