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

相关文章
|
3月前
|
JSON 安全 前端开发
浅析CORS跨域漏洞与JSONP劫持
浅析CORS跨域漏洞与JSONP劫持
139 3
|
23天前
|
安全 Java 应用服务中间件
SpringBoot:CORS是什么?SpringBoot如何解决跨域问题?
CORS是Web开发中常见且重要的机制,SpringBoot通过提供注解、全局配置和过滤器等多种方式来解决跨域问题。选择适合的方式可以帮助开发者轻松处理跨域请求,提高应用的灵活性和安全性。
52 2
|
1月前
|
安全
CORS 跨域资源共享的实现原理是什么?
CORS 跨域资源共享的实现原理是什么?
|
1月前
|
开发框架 中间件 Java
如何处理跨域资源共享(CORS)的 OPTIONS 请求?
处理 CORS 的 OPTIONS 请求的关键是正确设置响应头,以告知浏览器是否允许跨域请求以及允许的具体条件。根据所使用的服务器端技术和框架,可以选择相应的方法来实现对 OPTIONS 请求的处理,从而确保跨域资源共享的正常进行。
|
1月前
|
JavaScript 前端开发 API
跨域资源共享(CORS)的工作原理是什么?
跨域资源共享(CORS)通过浏览器和服务器之间的这种交互机制,在保证安全性的前提下,实现了跨域资源的访问,使得不同源的网页能够合法地获取和共享服务器端的资源,为现代Web应用的开发提供了更大的灵活性和扩展性。
|
2月前
|
JSON 前端开发 安全
CORS 是什么?它是如何解决跨域问题的?
【10月更文挑战第20天】CORS 是一种通过服务器端配置和浏览器端协商来解决跨域问题的机制。它为跨域资源共享提供了一种规范和有效的方法,使得前端开发人员能够更加方便地进行跨域数据交互。
|
1月前
|
安全
CORS 跨域资源共享的实现原理
CORS 跨域资源共享的实现原理
|
2月前
|
缓存 前端开发 应用服务中间件
CORS跨域+Nginx配置、Apache配置
CORS跨域+Nginx配置、Apache配置
251 7
|
3月前
|
安全
CORS 跨域资源共享的实现原理
CORS 跨域资源共享的实现原理
|
4月前
|
Web App开发 JSON 数据格式
【Azure Developer】浏览器查看本地数据文件时遇见跨域问题(CORS)
【Azure Developer】浏览器查看本地数据文件时遇见跨域问题(CORS)
【Azure Developer】浏览器查看本地数据文件时遇见跨域问题(CORS)