让 golang Gorilla CORS 处理程序工作

2024-01-02

我在这里有相当简单的设置,如下面的代码所述。但我无法得到CORS上班。我不断收到此错误:

XMLHttpRequest 无法加载http://localhost:3000/signup http://localhost:3000/signup。响应 预检请求未通过访问控制检查:无“访问-” Control-Allow-Origin'标头存在于所请求的资源上。 起源 'http://本地主机:8000 http://localhost:8000' 因此不允许访问。这 响应的 HTTP 状态代码为 403。

我确信我在这里缺少一些简单的东西。

这是我的代码:

package main

import (
    "log"
    "net/http"

    "github.com/gorilla/handlers"
    "github.com/gorilla/mux"
    "myApp/src/controllers"
)

func main() {
    ac := new(controllers.AccountController)

    router := mux.NewRouter()
    router.HandleFunc("/signup", ac.SignUp).Methods("POST")
    router.HandleFunc("/signin", ac.SignIn).Methods("POST")

    log.Fatal(http.ListenAndServe(":3000", handlers.CORS()(router)))
}

请阅读 Markus 建议的链接,以及有关触发 CORS 飞行前请求的内容的信息。

飞行前请求:您可能有一个内容类型(例如 JSON)或其他一些触发飞行前请求的自定义标头,而您的服务器可能无法处理这些请求。如果您在前端使用常见的 AJAX,请尝试添加此一项:https://en.wikipedia.org/wiki/List_of_HTTP_header_fields#Requested-With https://en.wikipedia.org/wiki/List_of_HTTP_header_fields#Requested-With

大猩猩的handlers.CORS()将设置合理的默认值,让 CORS 的基础知识为您工作;但是,您可以(也许应该)以更实用的方式进行控制。

这是一些起始代码:

// Where ORIGIN_ALLOWED is like `scheme://dns[:port]`, or `*` (insecure)
headersOk := handlers.AllowedHeaders([]string{"X-Requested-With"})
originsOk := handlers.AllowedOrigins([]string{os.Getenv("ORIGIN_ALLOWED")})
methodsOk := handlers.AllowedMethods([]string{"GET", "HEAD", "POST", "PUT", "OPTIONS"})

// start server listen
// with error handling
log.Fatal(http.ListenAndServe(":" + os.Getenv("PORT"), handlers.CORS(originsOk, headersOk, methodsOk)(router)))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

让 golang Gorilla CORS 处理程序工作 的相关文章

随机推荐

  • Eclipse - 更新/安装新软件非常慢

    这个问题之前已经描述过 但建议的解决方案都不适合我 这就是问题 我已经安装了最新版本的 Eclipse Luna 4 4 1 如果我想进行更新或安装新软件 则需要很长时间才能完成 很多小时 如果我将所需的软件下载到本地存档 更新站点并从那里
  • 我可以访问 Lotus Notes 的数据库吗?

    这是我第一次使用 Lotus Notes 所以我只知道如何使用它 我也是一名开发人员 所以我对数据库有所了解 目前 我收到将用户添加到 AD 帐户或从 AD 禁用用户甚至修改其在 AD 中的属性的请求 这些请求是通过 Lotus Notes
  • 带有测试容器的 BitBucket 管道无法正常工作

    当尝试使用测试容器运行 bitbucket 管道时 我遇到此错误 无法启动容器 java lang IllegalStateException Container 没有正确启动 没有其他问题 但也许与 Binds 有关 日志 HostCon
  • 解析错误,为什么? :( [复制]

    这个问题在这里已经有答案了 我正在为学校项目摆弄一些东西 遇到了一个我自己无法解决的问题 所以这是我的问题 为什么我会收到此错误 Parse error syntax error unexpected output2 T VARIABLE
  • 微服务和 Spring Security OAuth2

    我已经在另一个项目中运行了 OAuth2 授权服务器 现在我需要使用 OAuth2 保护几个简单的 spring boot Rest servers 但我正在寻找Spring文档 http projects spring io spring
  • 使用 SMO 编写部分数据内容的脚本(仅匹配 WHERE 子句的行)

    我使用 SMO 用 SQL Server 数据库的数据填充 SQL Compact 数据库 这是我实际使用的代码 foreach Table l tblCurrent in l dbDatabase Tables if l tblCurre
  • 安装 Tensorflow 时出现问题——不是 CUDA/CuDNN 问题

    我最近开始使用 Tensorflow 但安装时遇到问题 每次我尝试导入它时都会收到以下错误 gt gt gt import tensorflow as tf Traceback most recent call last File C Us
  • 如何使用 numpy/scipy 处理丢失的数据?

    我在数据清理中最常处理的事情之一就是缺失值 R 使用其 NA 缺失数据标签很好地处理了这个问题 在Python中 看来我必须处理屏蔽数组 这似乎是设置的一个主要难题 而且似乎没有很好的文档记录 关于用 Python 简化这个过程有什么建议吗
  • 在asp.net服务器端代码中?

    我有这个代码 string s royi string val 5 我也有一个label
  • HTML/CSS 嵌套菜单下拉菜单

    我不明白如何为导航栏菜单创建嵌套下拉菜单 我想使用按钮和 div 而不是列表 链接 引导程序 我在这里构建了一些我认为正确的东西 但当然我无法让它工作 有人可以帮我让下拉菜单和嵌套下拉菜单正常工作吗 dropdown background
  • 使用 .NET 4.6.2 中的 HttpClientFactory

    我有一个 NET 4 6 2 控制台应用程序 使用简单注入器 我需要调用 HTTP 服务 直接使用 HttpClient 遇到问题后 我尝试使用 HttpClientFactory https github com aspnet HttpC
  • 链接器如何解析 C 中多重定义的全局符号

    我的教科书上是这么说的 函数和初始化的全局变量获得强符号 未初始化的全局变量获得弱符号 给定一个强符号和多个弱符号 选择强符号 所以我创建了两个文件来查看 file1 c int number int main int argc char
  • 与具有 10M 记录的 MySQL 相比,MongoDB 非常慢

    我有一个负载相当高的项目 在 MySQL 上运行 有大约 10M 条记录 每秒大约有 500 个请求 数据相当独特 缓存命中率只有3 左右 每行大约有 10 个字段 其中 2 个已建立索引 我的查询 99 使用这两个索引字段来请求 我决定尝
  • R 中的函数将小数转换为具有指定分母的分数

    假设我有一个小数列表 x lt c 0 55 0 246 0 767 然后我希望将这些转换成 10 以内的分数 这样我就得到 6 10 2 10 8 10 我遇到过这个 效果非常好 但是 我想知道是否有一个函数可以做到这一点 frac fu
  • 无需网络连接的桌面应用程序防止盗版?

    假设对于一个在其生命周期内永远不会接收互联网连接的应用程序 如何防止该软件的盗版 安装过程中不能有单一的产品密钥要求 因为一旦合法安装 任何人都可以复制安装并重新分发它 因此 每次应用程序运行时 它都应该检查某些内容 如果检查失败 则崩溃
  • 具有一个固定列宽的 Flexbox [重复]

    这个问题在这里已经有答案了 我正在努力实现flexbox有两列 左侧具有固定宽度 右侧随着页面大小的变化而缩放 例如 div class flex container div class flex col left div div
  • 即使特定日期没有数据,mysql日期列表也包含计数[重复]

    这个问题在这里已经有答案了 可能的重复 MySQL如何填充范围内缺失的日期 https stackoverflow com questions 3538858 mysql how to fill missing dates in range
  • 无需浏览器的 Selen 测试

    我使用 Selenium RC 进行测试 现在要执行负载测试 我想运行并行测试用例 有没有什么方法可以在不打开浏览器的情况下运行它们 Chrome 现在有无头模式 op webdriver ChromeOptions op add argu
  • Array.prototype.concat() 底层

    如何查看函数 concat 中的代码 它是如何做它所做的事情的 有人有代码的副本或在浏览器控制台中查看它的方法吗 console dir 不允许我访问过去 console dir Array prototype concat functio
  • 让 golang Gorilla CORS 处理程序工作

    我在这里有相当简单的设置 如下面的代码所述 但我无法得到CORS上班 我不断收到此错误 XMLHttpRequest 无法加载http localhost 3000 signup http localhost 3000 signup 响应