,我在后端使用 golang 和 gin-gonic/gin web 框架,在前端使用 react axios。我已经尝试解决它两天了,但我仍然遇到以下相同的错误:,仅当我尝试发送 patch 请求时才会发生此错误,因此该请求需要预检 options 请求,但 get 和 post 一切都按预期工作,它们不运行任何预检检查。,这是我的路由器配置的代码:,这是前端:,我非常确定我正确设置了后端,它应该返回所有必要的标头。,例如,对于 get 请求,响应标头如下所示:,虽然对于 patch 请求尝试,我没有任何响应(毫不奇怪),并且预检响应标头是:,您对可能出现的问题有什么建议吗?经过这两天我已经毫无头绪了。预先感谢您!,我还尝试添加标题:,…再次在 if 语句中:,但这根本没有帮助。事实上,这个if语句在执行预检时并没有执行,我从控制台知道服务器正在执行options请求。,编辑:,这是发送 patch 请求的 curl 命令(因此实际上这是预检 options 请求):,对此请求的响应:,事实证明,您正在使用已弃用的软件包
github.com/gin-gonic/contrib/cors
。您应该使用 github.com/gin-contrib/cors
代替。这是使用 github.com/gin-contrib/cors
的演示配置:,由于某种原因,patch
请求标头缺少“cookie”标头,尽管我使用了 withcredentials
参数。,这里 { withcredentials: true }
被视为数据,并且没有配置。如果你没有数据发送到服务器,你应该这样写:,