GOCN每日新闻(2017-12-26)

回复

每日新闻傅小黑 发起了问题 • 1 人关注 • 0 个回复 • 554 次浏览 • 2017-12-26 13:45 • 来自相关话题

GoCN每日新闻(2017-12-25)

回复

每日新闻kevin 发起了问题 • 1 人关注 • 0 个回复 • 574 次浏览 • 2017-12-25 10:50 • 来自相关话题

GoCN每日新闻(2017-12-24)

回复

每日新闻罗发宣 发起了问题 • 1 人关注 • 0 个回复 • 524 次浏览 • 2017-12-24 09:48 • 来自相关话题

GoCN每日新闻(2017-12-23)

回复

每日新闻samurai 发起了问题 • 1 人关注 • 0 个回复 • 505 次浏览 • 2017-12-23 11:11 • 来自相关话题

GoCN每日新闻(2017-12-22)

回复

每日新闻kevin 发起了问题 • 1 人关注 • 0 个回复 • 532 次浏览 • 2017-12-22 11:18 • 来自相关话题

GoCN每日新闻(2017-12-21)

回复

每日新闻罗发宣 发起了问题 • 2 人关注 • 0 个回复 • 562 次浏览 • 2017-12-21 11:20 • 来自相关话题

如何通过RSA指数和模数进行加密

回复

有问必答ZenQy 发起了问题 • 1 人关注 • 0 个回复 • 217 次浏览 • 2017-12-20 11:34 • 来自相关话题

GoCN每日新闻(2017-12-20)

回复

每日新闻moss 发起了问题 • 1 人关注 • 0 个回复 • 534 次浏览 • 2017-12-20 09:59 • 来自相关话题

Go Gin 允许跨域访问

文章分享xfstart07 发表了文章 • 0 个评论 • 437 次浏览 • 2017-12-19 13:29 • 来自相关话题

上周五的时候,给接口添加了支持跨域访问,所有做一下跨域方面的笔记。

HTTP 访问控制(CORS)

当一个资源从与该资源本身所在的服务器不同的域或端口请求一个资源时,资源会发起一个跨域 H... 查看全部

上周五的时候,给接口添加了支持跨域访问,所有做一下跨域方面的笔记。


HTTP 访问控制(CORS)


当一个资源从与该资源本身所在的服务器不同的域或端口请求一个资源时,资源会发起一个跨域 HTTP 请求。


出于安全原因,浏览器限制从脚本内发起的跨域 HTTP 请求。例如,XMLHttpRequest 和 Fetch API 遵循同源策略。这意味着使用这些 API 的 Web 应用程序只能从加载应用程序的同一个域请求 HTTP 资源,除非使用 CORS 头文件。


跨域资源共享标准:规范要求,对那些可能对服务器数据产生副作用的 HTTP 请求方法(特别是 GET 以外的 HTTP 请求,或者搭配某些 MIME 类型的 POST 请求),浏览器必须首先使用 OPTIONS 方法发起一个预检请求(preflight request),从而获知服务端是否允许该跨域请求。服务器确认允许之后,才发起实际的 HTTP 请求。在预检请求的返回中,服务器端也可以通知客户端,是否需要携带身份凭证(包括 Cookies 和 HTTP 认证相关数据)。


ps. 上面是 MDN 的文档介绍。


Gin 添加跨域中间件


Gin 是一个Go 开发的 Web 框架,给 Gin 加 CORS 的支持也是非常简单的。


CORS 中间件插件


这是 Gin 官方的 CORS 中间件
https://github.com/gin-contrib/cors


使用 CORS


引入包


import "github.com/gin-contrib/cors"

允许所有源的配置


func main() {
router := gin.Default()
// same as
// config := cors.DefaultConfig()
// config.AllowAllOrigins = true
// router.Use(cors.New(config))
router.Use(cors.Default())
router.Run()
}

自定义源的配置


config := cors.DefaultConfig()
config.AllowOrigins = []string{"http://google.com"}
config.AddAllowOrigins("http://facebook.com")

自定义其他配置:


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,
}

主要的几个配置介绍:



  • AllowOrigins 允许源列表

  • AllowAllOrigins 允许所有源,返回的格式 Access-Control-Allow-Origin: *

  • AllowMethods 允许的方法列表

  • AllowHeaders 允许的头部信息

  • AllowCredentials 允许暴露请求的响应,Access-Control-Allow-Credentials: true


资源


https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Access_control_CORS


https://developer.mozilla.org/en-US/docs/Web/HTTP/Server-Side_Access_Control


https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Access-Control-Allow-Credentials


https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Authentication


https://github.com/gin-contrib/cors

GoCN每日新闻(2017-12-19)

回复

每日新闻csxuejin 发起了问题 • 2 人关注 • 0 个回复 • 529 次浏览 • 2017-12-19 10:09 • 来自相关话题

才云科技招聘容器云研发工程师(上海)

回复

招聘应聘supereagle 发起了问题 • 1 人关注 • 0 个回复 • 333 次浏览 • 2017-12-18 18:07 • 来自相关话题

GoCN每日新闻(2017-12-18)

回复

每日新闻smallfish1 发起了问题 • 2 人关注 • 0 个回复 • 564 次浏览 • 2017-12-18 08:57 • 来自相关话题

GoCN每日新闻(2017-12-17)

回复

每日新闻lwhile 发起了问题 • 1 人关注 • 0 个回复 • 587 次浏览 • 2017-12-17 09:59 • 来自相关话题

GoCN每日新闻(2017-12-16)

回复

每日新闻DennisMao 发起了问题 • 1 人关注 • 0 个回复 • 507 次浏览 • 2017-12-16 15:59 • 来自相关话题

thrift安装

文章分享jinheking 发表了文章 • 0 个评论 • 195 次浏览 • 2017-12-15 15:13 • 来自相关话题

不知道怎么在这里贴不过来,就写在开源中国了。

把地址发在这里 https://my.oschina.net/u/3739809...