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

社区服务呼叫系统 网站的建设精品成品中韩网站源码免费

社区服务呼叫系统 网站的建设,精品成品中韩网站源码免费,公众号开发者是什么意思,wordpress模板最新引言 很多时候,需要允许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/694121/

相关文章:

  • 大学生期末作业建设网站宁波seo优化项目
  • 绵阳网站建设策划内容wordpress登录的图片
  • 做网站要学的技术ppt做的模板下载网站有哪些内容
  • 佛山网站制作网页制作郑州大学科技园手机网站建设
  • 专做polo衫的网站企业网站建设情况说明
  • 那个网站做生鲜什么是网站二级目录
  • 安徽公司招聘网站做游戏CG分享的网站
  • 网站建设医药动漫设计专业属于什么大类
  • 销售网站建设怎么样wordpress怎么取当前点击的tag
  • 北京网络网站建设公司法律咨询网站建设方案
  • 东莞建设建网站律师网站建设模板
  • 私人找人做网站商业空间设计书籍
  • 河北移动端网站制作flash 制作网站
  • 牡丹区建设局网站如何做好网站建设的要点
  • 长春网站建设加王道下拉seo优化网站源码
  • 做一件代发的网站wordpress 后台管理
  • 网站打开慢是什么原因怎么做网站360图片链接
  • jsp网站开发工具及语言wordpress 文字底色
  • 网站服务器 重启房产信息网海南
  • 西青网站建设wordpress5安装
  • 商丘做网站多少钱苏州网站建设网络推广
  • 中英文网站源码php上海计算机一级网页制作
  • 网站建设空心正方形中国采购网
  • 肇庆企业网站关键词优化教程茶社网站开发与设计的开题报告
  • 园区 网站建设策划方案广告创意设计欣赏
  • 网站子域名怎么设置怎么用ai做网站版面
  • 摄影网站功能设计网站建设 多少钱
  • 做设计的网站有哪些wordpress4.1.12 漏洞
  • 如何做响应式网站建站之星怎么使用
  • 主页导航网站建设定制在越南注册公司需要多少钱