当前位置: 首页 > 面试题库 >

使golang Gorilla CORS处理程序正常工作

唐海阳
2023-03-14
问题内容

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

XMLHttpRequest无法加载http:// localhost:3000 /
signup
。对预检请求的响应未通过访问控制检查:在请求的资源上不存在“ Access-
Control-Allow-Origin”标头。因此,不允许访问源’ http://
localhost:8000 ‘。响应的HTTP状态码为403。

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

这是我的代码:

package main

import (
    "log"
    "net/http"

    "github.com/gorilla/handlers"
    "html" target="_blank">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

大猩猩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)))


 类似资料:
  • 我想为我的应用程序使用自定义异常处理程序。但是,它不能正常工作。 ApplicationExceptionHandler.java authFilterRegistration.java ErrorEntity.java 使用这些代码,我希望有一个像这样的异常错误 这是的实例,但我得到了以下输出 从示例中可以清楚地看出,我无法完全覆盖默认的Java异常。仅更改成功的消息部分。我错过什么了吗?

  • 我在主页组件中有这个代码,当按下向下/向上箭头键时,什么也没有发生。我刚刚意识到,当用ctrl键按箭头键时,eventhandler可以正常工作。我到处找,但什么也没找到。有人能帮忙吗?我的浏览器是Chrome v.96。React版本17.0.2,节点v.16.13.1

  • 我的RestController类: 我的ExceptionHandler: 例外响应:

  • 1.1 异常处理的基本使用 try: <语句块1> except: <语句块2> try 捕获异常 except 发生异常时执行 try: <语句块1> except <异常类型名字>: <语句块2> except <异常类型名字> 发生对应异常时才会执行 1.2 异常处理的高级使用 try: <语句块1> except

  • 我是一个有Spring和Spring靴的新手。在创建了一个简单的REST API来对用户执行CRUD操作之后,我还创建了自定义的异常处理程序来捕获应用程序中发生的任何异常。这是我写的代码 controller类 使用@ControllerAdvice注释的异常处理程序类 但是,当发生任何异常时,应用程序将被重定向到/error page,而不是由异常处理程序类处理。谁能给出正确的方法来做这件事。

  • 我对MongoDB Java驱动程序(使用3.0.4版本的驱动程序和3.2.3版本的MongoDB)有一个问题。我正在尝试检查是否有连接打开到MongoDB服务器,如果没有打开,则抛出异常。我应该可以抓住它: 我遇到的问题是抛出的异常没有被捕获,它似乎来自一个我无法访问的线程?对于测试,我没有运行Mongo服务器来查看抛出的异常。与本问题中的问题类似(MongoDB java driver 3.0