Hertz中的CORS问题。

本文涉及的产品
Serverless 应用引擎 SAE,800核*时 1600GiB*时
注册配置 MSE Nacos/ZooKeeper,118元/月
函数计算FC,每月15万CU 3个月
简介: 字节跳动开源框架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

相关文章
Hertz踩坑记录,Hertz-CORS跨域问题
字节跳动开源框架Hertz,可能存在的CORS的跨域问题
|
3月前
|
前端开发 安全 JavaScript
Spring Boot2 系列教程(十四)CORS 解决跨域问题
Spring Boot2 系列教程(十四)CORS 解决跨域问题
|
6天前
|
安全
CORS 跨域资源共享的实现原理
CORS 跨域资源共享的实现原理
|
4月前
|
存储 安全 前端开发
第五章 跨域资源共享(CORS):现代Web开发中的关键机制
第五章 跨域资源共享(CORS):现代Web开发中的关键机制
144 1
|
4月前
|
移动开发 JSON 前端开发
跨域资源共享(CORS):详解跨域请求的限制与解决方法
跨域资源共享(CORS):详解跨域请求的限制与解决方法
|
17天前
|
Web App开发 JSON 数据格式
【Azure Developer】浏览器查看本地数据文件时遇见跨域问题(CORS)
【Azure Developer】浏览器查看本地数据文件时遇见跨域问题(CORS)
【Azure Developer】浏览器查看本地数据文件时遇见跨域问题(CORS)
|
17天前
|
API
【Azure Function】Function本地调试时遇见跨域问题(blocked by CORS policy)
【Azure Function】Function本地调试时遇见跨域问题(blocked by CORS policy)
【Azure Function】Function本地调试时遇见跨域问题(blocked by CORS policy)
|
29天前
|
安全 前端开发 Java
Web端系统开发解决跨域问题——以Java SpringBoot框架配置Cors为例
在Web安全上下文中,源(Origin)是指一个URL的协议、域名和端口号的组合。这三个部分共同定义了资源的来源,浏览器会根据这些信息来判断两个资源是否属于同一源。例如,https://www.example.com:443和http://www.example.com虽然域名相同,但由于协议和端口号不同,它们被视为不同的源。同源(Same-Origin)是指两个URL的协议、域名和端口号完全相同。只有当这些条件都满足时,浏览器才认为这两个资源来自同一源,从而允许它们之间的交互操作。
Web端系统开发解决跨域问题——以Java SpringBoot框架配置Cors为例
|
18天前
|
安全 开发者 UED
|
18天前
|
前端开发 JavaScript
【Azure 环境】前端Web通过Azure AD获取Token时发生跨域问题(CORS Error)
【Azure 环境】前端Web通过Azure AD获取Token时发生跨域问题(CORS Error)