当前位置: 首页 > 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.hkea.cn/news/925061/

相关文章:

  • 商城网站建设报价方案免费建网站软件下载
  • 中国做美国酒店的网站好竞价托管收费标准
  • 网站开发与设计静态网页源代码站长之家app下载
  • 松原做网站app运营推广是干什么
  • 做简单的网站链接2024新闻热点摘抄
  • 百度网站站长环球网疫情最新
  • 颍上做网站西安seo网站关键词优化
  • 有没有兼职做设计的网站吗知名网络软文推广平台
  • 数据百度做网站好用吗米拓建站
  • 网站维护运营怎么做搜索引擎优化通常要注意的问题有
  • 圆梦科技专业网站建设恶意点击软件有哪些
  • 如何做vip电影解析网站竞价恶意点击器
  • 开发简单小程序公司深圳网站优化哪家好
  • 网站开发劣势搜索引擎排名优化
  • 桂林网站优化公司企业网络营销顾问
  • 上海外贸出口代理公司排名搜索引擎优化的主要工作有
  • 一般做企业网站需要什么资料广告咨询
  • 广州网站建设兼职网站为什么要做seo
  • 中企动力官网 网站怎么在平台上做推广
  • 教育培训网站建设方案广告宣传费用一般多少
  • 计算机网站设计论文营销排名seo
  • 源码资源国内专业seo公司
  • 丽水微信网站建设报价免费精准客源
  • 广东建设工程中标公示网站google搜索引擎优化
  • 南宁老牌网站建设公司正版google下载
  • 网站做信用认证有必要吗微信朋友圈推广平台
  • 电子政务网站建设要求百度关键词规划师
  • 博客网站开发毕设免费大数据分析网站
  • 深圳教育平台网站建设好消息疫情要结束了
  • 国外设计文章的网站淘宝代运营靠谱吗