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

上海公司网站建设电话黑龙江网站建设业务

上海公司网站建设电话,黑龙江网站建设业务,做旅游网站怎么做呀,怎么做网站赚钱目录 一、概述 二、简单请求和预检请求 简单请求 预检请求 三、使用go的gin框架实现cors配置 1、安装 2、函数 一、概述 CORS#xff08;Cross-Origin Resource Sharing#xff09;是一种浏览器安全机制#xff0c;用于控制在Web应用程序中不同源#xff08;OriginCross-Origin Resource Sharing是一种浏览器安全机制用于控制在Web应用程序中不同源Origin之间的资源共享。一个源是由协议例如http或https、主机例如 www.example.com)、以及端口例如80或443组成的组合。CORS允许服务器定义哪些源可以访问其资源以及哪些HTTP方法和头部可以在跨源请求中使用。 要点 同源策略Same-Origin PolicyWeb浏览器实施了同源策略它限制了一个页面中加载的资源只能来自相同的源以防止而已站点获取用户的敏感信息。这意味着默认情况下跨域请求是被浏览器禁止的。跨源HTTP请求当一个Web页面需要从不同源的服务器获取数据时例如通过AJAX请求或嵌入其他站点的资源如字体、图片或脚本就会设计到跨源HTTP请求。CORS解决跨域问题 CORS是一种机制允许服务器在响应中添加HTTP标头来指示浏览器允许跨域请求。这些标头包括”Access-Control-Allow-Origin“、”Access-Control-Allow-Methods“、”Access-Control-Allow-Headers“等简单请求和预检请求浏览器将跨域HTTP请求分为两种类型简单请求Simple Request和预检请求Preflight Request。简单请求就是常见的GET、POST请求而预检请求时一种用于检查服务器是否支持某些请求的OPTION请求。服务器配置CORS的服务器配置通常在服务器端完成。服务器需要响应OPTIONS请求并在响应头中包含CORS标头来指定允许的来源、HTTP方法和头部。服务器还可以选择性地要求携带凭据credentials浏览器行为浏览器在发送跨域请求时会自动附加Origin头然后根据服务器的响应判断是否允许访问资源。如果CORS设置不正确浏览器会阻止页面访问响应的数据。 二、简单请求和预检请求 简单请求 1、判定条件 需要同时满足以下条件浏览器会认为它是一个简单请求 请求方法属于其中一种GET、POST、HEAD请求包仅包含安全的字段常见字段Accept、Accept-Language、Content-Language、Content-Type、DPR、Downlink、Save-Data、Viewport-Width、Width请求头如果包含Content-Type仅限如下值text/plain、multipart/form-data、application/x-www-form-urlencoded 2、简单请求交互 ①当浏览器判某个跨域请求时简单请求时会在请求头中自动添加Origin字段 GET /cors HTTP/1.1 Host: example.com Connection: keep-alive ... Referer: http://local.com/index.html Origin: http://local.com //Origin字段会告诉服务器是哪个源地址在跨域请求②服务器响应头中应包含Access-Control-Allow-Origin 当服务器收到请求后如果允许改请求跨域访问需要在响应头中添加Access-Control-Allow-Origin字段 HTTP/1.1 200 OK Date: Tue, 21 Jun 2023 08:03:35 GMT ... Access-Control-Allow-Origin: http://local.com ...消息体中的数据 当浏览器看到服务器允许自己访问后于是它就把响应顺利的交给js 预检请求 1、对于预检请求请求步骤如下 浏览器发送预检请求询问服务器是否允许服务器响应是否允许浏览器发送真实请求服务器完成真实的响应 2、步骤请求演示 要发送的请求包 POST /cors HTTP/1.1 Host: example.com Connection: keep-alive ... Referer: http://local.com/index.html Origin: http://local.com {name: admin, age: 20} ①浏览器发送预检请求 OPTIONS /cors HTTP/1.1 Host: example.com ... Origin: http://local.com Access-Control-Request-Method: POST Access-Control-Request-Headers: a, b, content-typeps这并非想要发出的真实请求请求中不包含响应头和也没有消息体。 预检请求特征 请求方法为OPTIONS 没有请求体 请求头中包含 Origin请求的源和简单请求的含义一致Access-Control-Request-Method后续的真实请求将使用的请求方法Access-Control-Request-Headers后续的真实请求会改动的请求头 ②服务器允许 服务器收到预检请求后可以检查预检请求中包含的信息如果允许这样的请求需要响应下面的消息格式 HTTP/1.1 200 OK ... Access-Control-Allow-Origin: http://local.com Access-Control-Allow-Methods: POST Access-Control-Allow-Headers: a, b, content-type Access-Control-Max-Age: 86400 ...对于预检请求不需要响应任何的消息体只需要在响应头中添加  Access-Control-Allow-Origin和简单请求一样表示允许的源 Access-Control-Allow-Methods表示允许的后续真实的请求方法 Access-Control-Allow-Headers表示允许改动的请求头 Access-Control-Max-Age告诉浏览器多少秒内对于同样的请求源、方法、头都不需要再发送预检请求了 ③浏览器发送真实请求 预检被服务器允许后浏览器就会发送真实请求了上面的代码会发送下面的请求数据 POST /cors HTTP/1.1Host: example.comConnection: keep-alive ...Referer: http://local.com/index.htmlOrigin: http://local.com{name: admin, age: 20} ④服务器响应真实请求 HTTP/1.1 200 OK Date: Tue, 21 Jun 2023 08:03:35 GMT ... Access-Control-Allow-Origin: http://local.com ...添加用户成功 三、使用go的gin框架实现cors配置 使用go的gin框架的话说白了就是添加一个中间件Gin官方提供CORS中间件可以很方便的使用 cors解决跨域问题。 1、安装 使用命令安装该中间件 go get github.com/gin-contrib/cors 2、函数 cors中间件提供三个函数代表三种使用方式分别是NEW、DefaultConfig、Default。 NEW方式 可以接收 CORS 中间件的配置项可通过自定义配置项满足任意需要跨域的场景。 示例 router.Use(cors.New(cors.Config{AllowOrigins: []string{https://foo.com},AllowMethods: []string{PUT, PATCH},AllowHeaders: []string{Origin},ExposeHeaders: []string{Content-Length},AllowCredentials: true,AllowOriginFunc: func(origin string) bool {return origin https://github.com},MaxAge: 12 * time.Hour,})) //New 函数接收配置项返回一个用户自定义的 CORS 中间件绑定到路由中。 配置项说明 AllowAllOrigins bool 允许所有请求源。AllowOrigins []string 指定允许请求源的列表如果列表中存在 *则允许所有请求源默认值是 []。AllowOriginFunc func(origin string) bool 接收参数 origin函数体中的验证逻辑返回是否允许跨域请求。该配置项优先级高于 AllowOrigins []string如果设置该配置项AllowOrigins []string 配置项的设置被忽略。AllowMethods []string 允许的请求方式默认值是 GETPOSTPUTPATCHDELETEHEAD和 OPTIONS。AllowHeaders []string 用在对预请求的响应中指示实际的请求中可以使用哪些 HTTP 请求头。AllowCredentials bool 表示请求附带请求凭据时是否响应请求例如 cookie、HTTP authentication 或客户端 SSL 证书。ExposeHeaders []string 可以在响应中显示的请求头。MaxAge time.Duration 指示预请求的结果能被缓存多久。AllowWildcard bool 添加请求源是否允许使用通配符例如 http://some-domain/*https://api. 或 http://some.*.subdomain.com。AllowBrowserExtensions bool 允许使用常用的浏览器的扩展模式。AllowWebSockets bool 允许使用 WebSocket 协议。AllowFiles bool 允许使用 file:// 协议。 DefaultConfig方式 默认设置一些通用配置项我们可以直接使用也可以在此基础上添加我们需要的其他配置项。 func DefaultConfig() Config {return Config{AllowMethods: []string{GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS},AllowHeaders: []string{Origin, Content-Length, Content-Type},AllowCredentials: false,MaxAge: 12 * time.Hour,} } Default方式 在 DefaultConfig 方式的基础上设置 AllowAllOrigins 选项为 true因为 DefaultConfig 方式默认不允许任意请求源所以需要单独设置 AllowAllOrigins 选项为 true func Default() gin.HandlerFunc {config : DefaultConfig()config.AllowAllOrigins truereturn New(config) } 3、某段配置代码分析 //设置cors中间件 func Cors() gin.HandlerFunc {return func(c *gin.Context) {method : c.Request.Method //获取请求包的http请求方法origin : c.Request.Header.Get(Origin) //获取请求包的head头的Origin参数值var headerkeys []stringfor k : range c.Request.Header {headerkeys append(headerkeys, k)}headerStr : strings.Join(headerkeys, , ) //将请求包中head头部分的参数用,连接成字符串//检查请求头不为空if headerStr ! {//如果请求头不为空将请求头的键名添加到一个字符串中以便在设置响应头时包含这些键名。headerStr fmt.Sprintf(access-control-allow-origin, access-control-allow-headers,%s, headerStr)} else {headerStr access-control-allow-origin, access-control-allow-headers}//检查请求头中origin是否为空if origin ! {//设置响应头中的Access-Control-Allow-Origin字段允许任何域名访问资源这是一个简单的CORS策略实际应用中可能需要更严格的控制。c.Writer.Header().Set(Access-Control-Allow-Origin, *)c.Header(Access-Control-Allow-Methods, POST,GET,OPTIONS,PUT,DELETE, UPDATE)c.Header(Access-Control-Allow-Headers, Authorization, Content-Length, X-CSRF-Token, Token,session,X_Requested_With,Accept, Origin, Host, Connection, Accept-Encoding, Accept-Language,DNT, X-CustomHeader, Keep-Alive, User-Agent, X-Requested-With, If-Modified-Since, Cache-Control, Content-Type, Pragma)c.Header(Access-Control-Expose-Headers, Content-Length, Access-Control-Allow-Origin, Access-Control-Allow-Headers,Cache-Control,Content-Language,Content-Type,Expires,Last-Modified,Pragma,FooBar) // 跨域关键设置 让浏览器可以解析c.Header(Access-Control-Max-Age, 172800) // 缓存请求信息 单位为秒c.Header(Access-Control-Allow-Credentials, false) // 跨域请求是否需要带cookie信息 默认设置为truec.Set(content-type, application/json) // 设置返回格式是json}//放行所有OPTIONS方法if method OPTIONS {c.JSON(http.StatusOK, Options Request!)}} }
文章转载自:
http://www.morning.bmnm.cn.gov.cn.bmnm.cn
http://www.morning.wnjrf.cn.gov.cn.wnjrf.cn
http://www.morning.pswqx.cn.gov.cn.pswqx.cn
http://www.morning.pzjfz.cn.gov.cn.pzjfz.cn
http://www.morning.npbkx.cn.gov.cn.npbkx.cn
http://www.morning.pamdeer.com.gov.cn.pamdeer.com
http://www.morning.pmrlt.cn.gov.cn.pmrlt.cn
http://www.morning.jhwwr.cn.gov.cn.jhwwr.cn
http://www.morning.ypwlb.cn.gov.cn.ypwlb.cn
http://www.morning.rgkd.cn.gov.cn.rgkd.cn
http://www.morning.snrbl.cn.gov.cn.snrbl.cn
http://www.morning.dkqbc.cn.gov.cn.dkqbc.cn
http://www.morning.stbhn.cn.gov.cn.stbhn.cn
http://www.morning.kwwkm.cn.gov.cn.kwwkm.cn
http://www.morning.qdlnw.cn.gov.cn.qdlnw.cn
http://www.morning.rxnl.cn.gov.cn.rxnl.cn
http://www.morning.jyknk.cn.gov.cn.jyknk.cn
http://www.morning.fwkq.cn.gov.cn.fwkq.cn
http://www.morning.qlpq.cn.gov.cn.qlpq.cn
http://www.morning.pqchr.cn.gov.cn.pqchr.cn
http://www.morning.mkfhx.cn.gov.cn.mkfhx.cn
http://www.morning.hdqqr.cn.gov.cn.hdqqr.cn
http://www.morning.prlgn.cn.gov.cn.prlgn.cn
http://www.morning.xlztn.cn.gov.cn.xlztn.cn
http://www.morning.xrwbc.cn.gov.cn.xrwbc.cn
http://www.morning.qyhcm.cn.gov.cn.qyhcm.cn
http://www.morning.rddlz.cn.gov.cn.rddlz.cn
http://www.morning.ryfpx.cn.gov.cn.ryfpx.cn
http://www.morning.qcwck.cn.gov.cn.qcwck.cn
http://www.morning.homayy.com.gov.cn.homayy.com
http://www.morning.gqmhq.cn.gov.cn.gqmhq.cn
http://www.morning.zmyhn.cn.gov.cn.zmyhn.cn
http://www.morning.wdply.cn.gov.cn.wdply.cn
http://www.morning.bqwnp.cn.gov.cn.bqwnp.cn
http://www.morning.nclps.cn.gov.cn.nclps.cn
http://www.morning.lssfd.cn.gov.cn.lssfd.cn
http://www.morning.qyfrd.cn.gov.cn.qyfrd.cn
http://www.morning.nqlkb.cn.gov.cn.nqlkb.cn
http://www.morning.hqwtm.cn.gov.cn.hqwtm.cn
http://www.morning.jycr.cn.gov.cn.jycr.cn
http://www.morning.rbkml.cn.gov.cn.rbkml.cn
http://www.morning.cpzkq.cn.gov.cn.cpzkq.cn
http://www.morning.cxnyg.cn.gov.cn.cxnyg.cn
http://www.morning.zfqr.cn.gov.cn.zfqr.cn
http://www.morning.qcwck.cn.gov.cn.qcwck.cn
http://www.morning.yggwn.cn.gov.cn.yggwn.cn
http://www.morning.npfkw.cn.gov.cn.npfkw.cn
http://www.morning.ksgjn.cn.gov.cn.ksgjn.cn
http://www.morning.kzslk.cn.gov.cn.kzslk.cn
http://www.morning.rkwlg.cn.gov.cn.rkwlg.cn
http://www.morning.kwrzg.cn.gov.cn.kwrzg.cn
http://www.morning.smrty.cn.gov.cn.smrty.cn
http://www.morning.wbrf.cn.gov.cn.wbrf.cn
http://www.morning.kpgbz.cn.gov.cn.kpgbz.cn
http://www.morning.rfqkx.cn.gov.cn.rfqkx.cn
http://www.morning.mlnby.cn.gov.cn.mlnby.cn
http://www.morning.clfct.cn.gov.cn.clfct.cn
http://www.morning.jpqmq.cn.gov.cn.jpqmq.cn
http://www.morning.wwkft.cn.gov.cn.wwkft.cn
http://www.morning.tqbqb.cn.gov.cn.tqbqb.cn
http://www.morning.mjats.com.gov.cn.mjats.com
http://www.morning.rqjl.cn.gov.cn.rqjl.cn
http://www.morning.mytmn.cn.gov.cn.mytmn.cn
http://www.morning.gwgjl.cn.gov.cn.gwgjl.cn
http://www.morning.rcmcw.cn.gov.cn.rcmcw.cn
http://www.morning.ygrkg.cn.gov.cn.ygrkg.cn
http://www.morning.banzou2034.cn.gov.cn.banzou2034.cn
http://www.morning.mnbgx.cn.gov.cn.mnbgx.cn
http://www.morning.rnnq.cn.gov.cn.rnnq.cn
http://www.morning.gzzncl.cn.gov.cn.gzzncl.cn
http://www.morning.nzwp.cn.gov.cn.nzwp.cn
http://www.morning.nhzxr.cn.gov.cn.nhzxr.cn
http://www.morning.rfqkx.cn.gov.cn.rfqkx.cn
http://www.morning.lmqfq.cn.gov.cn.lmqfq.cn
http://www.morning.kzdgz.cn.gov.cn.kzdgz.cn
http://www.morning.bzlsf.cn.gov.cn.bzlsf.cn
http://www.morning.ydgzj.cn.gov.cn.ydgzj.cn
http://www.morning.qsswb.cn.gov.cn.qsswb.cn
http://www.morning.rlfr.cn.gov.cn.rlfr.cn
http://www.morning.rgpy.cn.gov.cn.rgpy.cn
http://www.tj-hxxt.cn/news/254013.html

相关文章:

  • 网站如何进行建设i岗网站建设
  • 宝安设备网站设计搭建邮箱注册网站
  • 彩票网站如何做推广wordpress的登录页面模板
  • 建网站为什么要租空间东莞建设有限公司
  • 一个公司做两个网站可以吗北京王府井在哪个区
  • 国外做任务网站这么建立com的网站
  • 电话销售网站建设话术淘宝客网站模板
  • 昆明云南微网站搭建哪家好热搜在哪里可以看
  • 开封建设局网站网站建设推广接单语
  • 丹阳企业网站网站建设 知乎
  • 南宁logo设计公司整站外包优化公司
  • 网畅学校网站管理系统wordpress建立数据库连接
  • 上海市建设资格注册中心网站wordpress 媒体库多选
  • 初步ps网页设计素材网站seo优化如何做
  • 深圳电商公司排名北京SEO网站优化公司
  • 保险微网站制作网站在建设中
  • 工业园区网站建设方案阿里巴巴登录入口
  • 教做宝宝衣服的网站用国外服务器做网站
  • 推广 网站建设网页制作的公司企业
  • 网站建设策划模板沧州机械类网站建设
  • 国际贸易网站开发企业建站套餐
  • 做网站的时候用的什么框架超能力联盟网站
  • 移动手机网站建设dedecms网站的源码如何安装
  • 做网站能挣钱吗东莞seo优化
  • 网站排行榜前十名网站建设hnshangtian
  • 九江网站建设多少钱手机网站建设与制作
  • 个人网站教程企业网站优化工具
  • 物流网站如何设计wordpress头像插件
  • 石景山网站建设制作公司什么类型的产品可以做网站出口
  • 动易网站 设置背景图片翻页大图网站