Hertz踩坑记录,Hertz-CORS跨域问题

简介: 字节跳动开源框架Hertz,可能存在的CORS的跨域问题

前言

字节跳动开源框架Hertz,可能存在的CORS的跨域问题

正文

文档信息

跨源资源共享 | CloudWeGo

  • 文档中描述
    | AllowAllOrigins | 用于设置允许来自任意 origin 的客户端访问服务端资源,默认为 false,所以我们在仅仅设置AllowAllOrigins = true的时候应该不会出现跨域问题。
  • 实际上仅仅配置这一项目也会产生跨域的问题,上周我提过一个issue,cloudwego已经完成了更新,下面是我但是处理的方案。

    解决方法

    思考Hertz和gin的相似之处,我将之前用于gin的跨域请求的代码放过来,跨域是没有产生的,因此处理Hertz的CORS可以这么进行。

package main
import (
    "github.com/cloudwego/hertz/pkg/app/server"
    "github.com/hertz-contrib/cors"
    "go.uber.org/zap"
    "qiniu/cmd/api/db"
    "qiniu/cmd/api/router"
    "qiniu/cmd/api/rpc"
    "time"
)

// biz/router/middleware/cors.go

func main() {
   
   
    h := server.New(
        server.WithHostPorts("0.0.0.0:8080"),
        server.WithHandleMethodNotAllowed(true),
    )
    h.Use(cors.New(cors.Config{
   
   
        //准许跨域请求网站,多个使用,分开,限制使用*
        AllowOrigins: []string{
   
   "*"},
        //准许使用的请求方式
        AllowMethods: []string{
   
   "PUT", "PATCH", "POST", "GET", "DELETE"},
        //准许使用的请求表头
        AllowHeaders: []string{
   
   "Origin", "Authorization", "Content-Type"},
        //显示的请求表头
        ExposeHeaders: []string{
   
   "Content-Type"},
        //凭证共享,确定共享
        AllowCredentials: true,
        //容许跨域的原点网站,可以直接return true就万事大吉了
        AllowOriginFunc: func(origin string) bool {
   
   
            return true
        },
        //超时时间设定
        MaxAge: 24 * time.Hour,
    }))
    logger, _ := zap.NewDevelopment()
    db.Init()                  //redis
    zap.ReplaceGlobals(logger) //日志
    rpc.InitRPC()              //rpc
    router.Init(h)             //路由

    h.Spin()
}

更多详细的信息请见:跨源资源共享 | CloudWeGo

相关文章
|
2月前
|
JSON 安全 前端开发
浅析CORS跨域漏洞与JSONP劫持
浅析CORS跨域漏洞与JSONP劫持
84 3
|
9天前
|
开发框架 中间件 Java
如何处理跨域资源共享(CORS)的 OPTIONS 请求?
处理 CORS 的 OPTIONS 请求的关键是正确设置响应头,以告知浏览器是否允许跨域请求以及允许的具体条件。根据所使用的服务器端技术和框架,可以选择相应的方法来实现对 OPTIONS 请求的处理,从而确保跨域资源共享的正常进行。
|
9天前
|
JavaScript 前端开发 API
跨域资源共享(CORS)的工作原理是什么?
跨域资源共享(CORS)通过浏览器和服务器之间的这种交互机制,在保证安全性的前提下,实现了跨域资源的访问,使得不同源的网页能够合法地获取和共享服务器端的资源,为现代Web应用的开发提供了更大的灵活性和扩展性。
|
23天前
|
JSON 前端开发 安全
CORS 是什么?它是如何解决跨域问题的?
【10月更文挑战第20天】CORS 是一种通过服务器端配置和浏览器端协商来解决跨域问题的机制。它为跨域资源共享提供了一种规范和有效的方法,使得前端开发人员能够更加方便地进行跨域数据交互。
|
1月前
|
缓存 前端开发 应用服务中间件
CORS跨域+Nginx配置、Apache配置
CORS跨域+Nginx配置、Apache配置
134 7
|
5月前
|
前端开发 安全 JavaScript
Spring Boot2 系列教程(十四)CORS 解决跨域问题
Spring Boot2 系列教程(十四)CORS 解决跨域问题
|
2月前
|
安全
CORS 跨域资源共享的实现原理
CORS 跨域资源共享的实现原理
|
3月前
|
Web App开发 JSON 数据格式
【Azure Developer】浏览器查看本地数据文件时遇见跨域问题(CORS)
【Azure Developer】浏览器查看本地数据文件时遇见跨域问题(CORS)
【Azure Developer】浏览器查看本地数据文件时遇见跨域问题(CORS)
|
3月前
|
API
【Azure Function】Function本地调试时遇见跨域问题(blocked by CORS policy)
【Azure Function】Function本地调试时遇见跨域问题(blocked by CORS policy)
【Azure Function】Function本地调试时遇见跨域问题(blocked by CORS policy)
|
3月前
|
安全 前端开发 Java
Web端系统开发解决跨域问题——以Java SpringBoot框架配置Cors为例
在Web安全上下文中,源(Origin)是指一个URL的协议、域名和端口号的组合。这三个部分共同定义了资源的来源,浏览器会根据这些信息来判断两个资源是否属于同一源。例如,https://www.example.com:443和http://www.example.com虽然域名相同,但由于协议和端口号不同,它们被视为不同的源。同源(Same-Origin)是指两个URL的协议、域名和端口号完全相同。只有当这些条件都满足时,浏览器才认为这两个资源来自同一源,从而允许它们之间的交互操作。
Web端系统开发解决跨域问题——以Java SpringBoot框架配置Cors为例