当前位置: 首页 > news >正文

合作建设网站协议个人音乐网站程序源码

合作建设网站协议,个人音乐网站程序源码,住房建设网站,企业邮箱怎样注册引言 很多时候,需要允许Web应用程序在不同域之间(跨域)实现共享资源。本文将简介跨域、CORS的概念,以及如何在Golang中如何实现CORS。 什么是跨域 如果两个 URL 的协议、端口(如果有指定的话)和主机都相…

引言

很多时候,需要允许Web应用程序在不同域之间(跨域)实现共享资源。本文将简介跨域、CORS的概念,以及如何在Golang中如何实现CORS。

什么是跨域

如果两个 URL 的协议、端口(如果有指定的话)和主机都相同的话,则这两个 URL 是同源的。例如
在这里插入图片描述

什么是CORS

跨域资源共享(Cross-origin resource sharing,CORS),用于让网页的受限资源能够被其他域名的页面访问的一种机制。通过该机制,页面能够自由地使用不同源的图片、样式、脚本、iframes以及视频。一些跨域的请求(特别是Ajax)常常会被同源策略(Same-origin policy)所禁止。跨源资源共享定义了一种方式,为的是浏览器和服务器之间能互相确认是否足够安全以至于能使用跨源请求(cross-origin requests)。比起纯粹的同源请求,这将更为自由和功能性的(functionality),但比纯粹的跨源请求更为安全。—维基百科

实现原理

跨域资源共享标准描述了,新的HTTP头部在浏览器有权限的时候,应该以如何的形式发送请求到远程URLs。虽然服务器会有一些校验和认证,但是浏览器有责任去支持这些头部以及增加相关的限制。对于能够修改数据的Ajax和HTTP请求方法(特别是 GET 以外的 HTTP 请求,或者搭配某些 MIME 类型的 POST 请求),浏览器必须首先使用 OPTIONS 方法发起一个预检请求(preflight request),从而获知服务端是否允许该跨源请求。服务器确认允许之后,才发起实际的 HTTP 请求。在预检请求的返回中,服务器端也可以通知客户端,是否需要携带身份凭证(包括 Cookies 和 HTTP 认证相关数据)。

Go是如何实现

在Golang中,可以使用HTTP处理程序和中间件来实现CORS。接着我们以Gin为例

package mainimport ("github.com/gin-gonic/gin""net/http"
)func main() {router := gin.Default()// CORS中间件cors := func(c *gin.Context) {// 允许特定的域进行跨域请求c.Writer.Header().Set("Access-Control-Allow-Origin", "http://mysite.vip")// 允许特定的请求方法c.Writer.Header().Set("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE")// 允许特定的请求头c.Writer.Header().Set("Access-Control-Allow-Headers", "Content-Type, Authorization")// 允许携带身份凭证(如Cookie)c.Writer.Header().Set("Access-Control-Allow-Credentials", "true")// 继续处理请求c.Next()}// 应用CORS中间件到所有路由router.Use(cors)// 定义一个路由和处理器函数router.GET("/hello-world", func(c *gin.Context) {c.String(http.StatusOK, "Hello, World!")})router.Run(":8080")
}

输出

[GIN-debug] GET /hello-world --> main.main.func2 (4 handlers)
[GIN-debug] Listening and serving HTTP on :8080

在上例中,设置了Access-Control-Allow-Origin响应头,指定允许跨域请求的域名。您可以根据需要设置为特定域名、通配符*(允许所有域名)或动态获取请求头中的Origin值。另外,还设置了允许的请求方法、请求头以及是否允许携带身份凭证(如Cookie)。

测试

这里通过命令行curl来验证,如果返回结果中出现 CORS 相关的 header( ccess-Control-Allow-Origin: * < Access-Control-Allow-Methods: * < Access-Control-Allow-Headers: * < Access-Control-Expose-Headers: * < Access-Control-Max-Age: 5 ),则跨域成功。结果如下:

#curl -i -k http://127.0.0.1:8080/hello-world
HTTP/1.1 200 OK
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: Content-Type, Authorization
Access-Control-Allow-Methods: GET, POST, PUT, DELETE
Access-Control-Allow-Origin: http://mysite.vip
Content-Type: text/plain; charset=utf-8
Date: Sat, 14 Oct 2023 13:42:35 GMT
Content-Length: 13Hello, World!
http://www.yayakq.cn/news/486578/

相关文章:

  • 鄂尔多斯市建设厅官方网站图片搜索
  • python做网站显示表格自己的网站什么做优化
  • 做网站分什么中国舆情在线
  • 男生女生做污事网站 localhostphp5 mysql网站开发基础与应用
  • 长沙做网站美工的公司为什么做网站要服务器 和域名
  • o2o网站建设新闻做企业网站服务
  • 求个网站你明白的怎么查找网站的根目录
  • yfcmf做网站做电影网站危险吗
  • 惠州网站设计培训游戏网页制作素材
  • 高唐网站开发网站建设 报价单 doc
  • google网站收录入口佛山关键词优化
  • 网站的流量建设和县网站设计
  • 网站建设公司有哪几家景洪网站建设
  • 郑州app网站公司品牌营销专业
  • 一般做门户网站多少钱网站建设与维护 目录
  • 太平洋车险报价入口微博seo营销
  • 如何新建一个网站甘肃省住房和建设厅网站首页
  • 南京电商网站设计网站联盟如何实现
  • 如何建立营销性企业网站论文页游赚钱
  • 长沙 网站设计 公司价格客户关系管理系统软件
  • 怎么做网站背景图片商城网站建设如何
  • 招标网站建设申请做网站的猫腻
  • 建个什么网站吗网站如何做微信支付链接
  • 做书籍封皮的网站山东聊城建设学校官网
  • 珠海网站建设 金蝶wordpress进度条插件
  • 放心网站推广优化咨询add filters Wordpress
  • 网页制作与网站发布外贸营销俱乐部
  • 网站优化西安网站开发 技术优势
  • 南宁网站定制团队抖音怎么挂小程序赚钱
  • 商城网站建设报价表物联网项目设计方案