返回顶部
首页 > 资讯 > 后端开发 > GO >重定向后 Golang 与 Gin 中的 CORS 错误
  • 812
分享到

重定向后 Golang 与 Gin 中的 CORS 错误

2024-02-09 20:02:23 812人浏览 安东尼
摘要

PHP小编小新在此为大家介绍重定向后golang与Gin中的CORS错误。CORS(跨源资源共享)是一种用于在不同域之间进行安全数据传输的机制,然而,在使用Golang和Gin框架时,

PHP小编小新在此为大家介绍重定向后golang与Gin中的CORS错误。CORS(跨源资源共享)是一种用于在不同域之间进行安全数据传输的机制,然而,在使用Golang和Gin框架时,遇到CORS错误是常见的问题。本文将详细解释CORS错误的原因和解决方法,帮助开发者更好地理解和处理这个问题。无论您是初学者还是有经验的开发者,本文都能为您提供有用的指导和解决方案。让我们一起来探索Golang和Gin中的CORS错误吧!

问题内容

我正在尝试在用 go 和 gin 编写的网络服务器中实现 google oauth2。我添加了两个新端点,名为 /google/sign-in 和 /google/callback。第一个接收请求并重定向到 google auth url,第二个在用户选择有效的 google 帐户、验证令牌并为我的内部身份验证创建 Jwt 后调用。

一切都很好,但事实并非如此,因为当我调用第一个 api 路由时,我收到了 cors 错误:

access to xmlHttprequest at 'https://accounts.google.com/o/oauth2/auth?access_type=online&client_id=xxxxxxxxxxxxx-337ka657nqlo84q6697vv2efsc2vqvm0.apps.googleusercontent.com&redirect_uri=http%3a%2f%2flocalhost%3a3000%2fgoogle%2fcallback&response_type=code&scope=https%3a%2f%2fwww.googleapis.com%2fauth%2fuserinfo.email+https%3a%2f%2fwww.googleapis.com%2fauth%2fuserinfo.profile&state=7e5f86fe352b4563c7d1bd62408285dcbc44e3e26a4f142bbae915279008ece6' (redirected from 'http://localhost:3000/google/sign-in') from origin 'http://localhost:4200' has been blocked by cors policy: response to preflight request doesn't pass access control check: no 'access-control-allow-origin' header is present on the requested resource.

这是我的 golang 代码:

r := gin.default()

r.use(cors.new(cors.config{
    alloworigins: []string{"*"},
    allowmethods: []string{"get", "post", "put", "delete", "patch", "options"},
    allowheaders: []string{"origin", "authorization", "content-type", "content-length", "accept-encoding", "x-csrf-token", "baggage", "sentry-trace", "x-user-lang"},
}))

r.post("/google/sign-in", authcontroller.redirecttogoogleauthpage)
r.get("/google/callback", authcontroller.googlesignin)

身份验证控制器

func (a AuthController) RedirectToGoogleAuthPage(c *gin.Context) {
  googleAuthConfig := utils.GetGoogleAuthConfig()
  state := utils.GenerateRandomKey()
  url := googleAuthConfig.AuthCodeURL(state, oauth2.AccessTypeOnline)
  session := sessions.Default(c)
  session.Set(state, state)
  err := session.Save()
  if err != nil {
      c.JSON(http.StatusInternalServerError, a.Errors.InternalError(err.Error()))
      return
  }
  c.Header("X-Auth-State", state)
  c.Redirect(http.StatusTemporaryRedirect, url)
}

在 googleauthconfig 中,回调 url 为 http://localhost:3000/google/callback,它已添加到 google cloud oauth 凭据中。

我知道我错过了回调请求中的 access-control-allow-origin,但如何添加该标头?

解决方法

根据问题中的信息,您正在访问http://localhost:4200页面,并向http://localhost:3000/google/sign-in发送ajax请求,该请求将重定向到https://accounts.google.com/o/oauth2/auth。这行不通。您需要将页面重定向到 https://accounts.google.com/o/oauth2/auth

有两种选择可以解决此问题:

  • 修改客户端代码以将 AJAX 请求替换为表单请求(使用

    元素)。在这种情况下,RedirectToGoogleAuthPage 中的 c.jsON 应替换为其他内容。

  • 或者修改 RedirectToGoogleAuthPage 以使用包含要重定向到的目标 URL 的 JSON 内容进行响应,并修改客户端代码以将页面重定向到目标 URL(使用 window.location = targetURL)。

看起来第二个选择需要对代码进行较少的更改。

以上就是重定向后 Golang 与 Gin 中的 CORS 错误的详细内容,更多请关注编程网其它相关文章!

您可能感兴趣的文档:

--结束END--

本文标题: 重定向后 Golang 与 Gin 中的 CORS 错误

本文链接: https://lsjlt.com/news/562790.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 重定向后 Golang 与 Gin 中的 CORS 错误
    php小编小新在此为大家介绍重定向后Golang与Gin中的CORS错误。CORS(跨源资源共享)是一种用于在不同域之间进行安全数据传输的机制,然而,在使用Golang和Gin框架时,...
    99+
    2024-02-09
  • linux错误输出重定向指的是什么
    这篇文章主要介绍“linux错误输出重定向指的是什么”,在日常操作中,相信很多人在linux错误输出重定向指的是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”linux错误输出重定向指的是什么”的疑惑有所...
    99+
    2023-06-30
  • Java API 中的 HTTP 重定向:如何避免常见错误?
    在开发 Web 应用程序时,HTTP 重定向是一个常见的场景。Java API 为我们提供了许多处理 HTTP 重定向的方式,但是在实际开发过程中,我们可能会遇到一些常见的错误。在本文中,我们将介绍 Java API 中的 HTTP 重定...
    99+
    2023-06-16
    api http 重定向
  • PHP中的关键字重定向:如何避免JavaScript的错误?
    在Web开发中,关键字重定向是一个非常常见的问题。在PHP中,有多种方法可以实现重定向,但是使用不当可能会导致JavaScript错误。在本文中,我们将介绍如何在PHP中正确使用关键字重定向,以避免这些错误。 什么是关键字重定向? 在PH...
    99+
    2023-10-19
    关键字 重定向 javascript
  • IDE 文件中的 ASP 重定向:如何避免常见错误?
    ASP(Active Server Pages)是一种经典的服务器端脚本语言,用于创建动态网页。在ASP中,重定向是一种常见的技术,用于将用户从一个页面重定向到另一个页面。但是,在IDE文件中实现ASP重定向时,经常会出现一些常见的错误。本...
    99+
    2023-10-30
    重定向 ide 文件
  • 如何在PHP中处理存储同步和重定向的错误?
    PHP是一种广泛使用的编程语言,被广泛用于Web应用程序开发。在PHP开发过程中,经常需要处理存储同步和重定向的错误。本文将介绍如何在PHP中处理这些错误,并提供一些示例代码。 一、存储同步错误的处理 在Web应用程序中,存储同步是指将数据...
    99+
    2023-10-07
    存储 同步 重定向
  • 重定向网页时,如何避免 PHP 的错误问题?
    重定向是网站开发中非常常见的操作,它可以将用户从当前页面直接跳转到另一个页面,从而实现某些功能。在 PHP 中,我们通常使用 header 函数来进行重定向操作。但是,如果不注意一些细节,就有可能出现一些错误问题。下面,我们就来探讨一下,在...
    99+
    2023-09-29
    npm leetcode 重定向
  • ASP API 日志重定向:如何避免常见的错误?
    在ASP API开发中,日志记录是非常重要的,它能够帮助我们定位和解决问题。然而,当日志记录配置不当时,它可能会导致一些常见的错误。本文将介绍ASP API日志记录的基础知识,并探讨如何避免常见的错误。 一、ASP API日志记录的基础知...
    99+
    2023-07-06
    api 日志 重定向
  • linux中的管道与重定向是什么
    这篇文章主要介绍了linux中的管道与重定向是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇linux中的管道与重定向是什么文章都会有所收获,下面我们一起来看看吧。 ...
    99+
    2023-04-20
    linux
  • 如何自定义处理 Golang 中的错误?
    自定义处理 golang 错误的方法为:创建自定义错误类型,实现 error.error 接口。在实战案例中,使用自定义错误处理程序以更具体地指定错误信息,便于调试和处理。 如何自定义...
    99+
    2024-05-15
    golang 错误处理
  • Python文件重定向和load函数:如何避免代码中的错误?
    Python是一种强大的编程语言,但即使是最有经验的开发人员也可能会遇到错误。其中一个常见的问题是在代码中使用文件操作时出错。在这种情况下,Python提供了文件重定向和load函数来解决这个问题。在本文中,我们将详细介绍文件重定向和lo...
    99+
    2023-09-20
    文件 重定向 load
  • Go语言中的重定向技巧:如何避免数据类型错误?
    在编写Go程序时,避免数据类型错误是一项重要的任务。这些错误可能会导致程序崩溃、数据丢失或安全漏洞。为了避免这些错误,我们可以使用重定向技巧,这是一种在编写程序时将错误从一个地方重定向到另一个地方的技巧。 在本文中,我们将介绍如何使用Go...
    99+
    2023-10-01
    重定向 数据类型 shell
  • Go和JavaScript编程:如何避免常见的重定向错误?
    在Web开发中,重定向是一个非常常见的操作。然而,如果不小心处理,重定向可能会导致一些常见的错误。本文将介绍一些常见的重定向错误以及如何使用Go和JavaScript来避免它们。 一、常见的重定向错误 重定向循环 重定向循环是指当一个...
    99+
    2023-10-21
    javascript 重定向 ide
  • SpringBoot中处理的转发与重定向方式
    目录一、返回ModelAndView时的请求转发1:转发到页面2:转发到controller二、返回ModelAndView时的重定向:发送的get请求,参数在url后面1.重定向到...
    99+
    2022-11-13
    SpringBoot 转发与重定向 SpringBoot 重定向
  • 如何在 ASP 中处理响应重定向的错误?bash 能否提供更好的错误处理机制?
    ASP 是一种广泛应用的 Web 开发技术,它的主要优势在于其高效的处理能力和强大的扩展性。然而,在处理响应重定向错误时,ASP 也存在一些问题。这篇文章将介绍如何在 ASP 中处理响应重定向的错误,并讨论 bash 是否能够提供更好的错误...
    99+
    2023-08-16
    响应 重定向 bash
  • PHP中跳转与重定向的区别是什么
    本教程操作环境:windows7系统、PHP7.1版、DELL G3电脑PHP中跳转和重定向的区别跳转:浏览器认为: 当前URL请求成功, 重新请求新的URL.浏览器会 记录当前的URL 和 新的URL 在请求历史记录中.回退, 是可以回退...
    99+
    2015-10-03
    php 重定向 跳转
  • PHP中跳转与重定向的区别有哪些
    这篇文章主要讲解了“PHP中跳转与重定向的区别有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PHP中跳转与重定向的区别有哪些”吧!区别:1、跳转是当前URL请求成功,重新请求新的URL...
    99+
    2023-06-25
  • linux中Bash管道与重定向的示例分析
    这篇文章主要为大家展示了“linux中Bash管道与重定向的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“linux中Bash管道与重定向的示例分析”这篇文章吧。管道与重定向Bash的标...
    99+
    2023-06-27
  • 在Python和Laravel中使用重定向函数:如何防止常见错误?
    重定向是一个常见的功能,它可以让你在网络应用中引导用户到指定的页面。在Python和Laravel中,我们可以使用重定向函数来实现这个功能。但是,在使用重定向函数时,我们也会遇到一些常见的错误,如何避免这些错误呢?接下来,我们将介绍如何在...
    99+
    2023-10-22
    laravel 函数 重定向
  • 重定向Go IDE:如何在并发编程中避免一些常见的错误?
    Go语言是一种非常流行的编程语言,它的并发编程模型使得它在网络编程、高并发场景下具有很大的优势。但是在并发编程中,常常会出现一些难以排查的错误。本文将介绍一些在并发编程中常见的错误,并提供一些避免这些错误的技巧。 竞态条件 竞态条件是...
    99+
    2023-09-23
    并发 ide 重定向
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作