11 Commits
v1.1 ... v1.2

Author SHA1 Message Date
cf4846e6a6 using dev version
Signed-off-by: Bo-Yi Wu <appleboy.tw@gmail.com>
2017-03-18 20:53:40 +08:00
69f558022a update test version.
Signed-off-by: Bo-Yi Wu <appleboy.tw@gmail.com>
2017-03-18 20:48:59 +08:00
30e66044d0 fix: revert gin link. (#20) 2017-03-18 07:45:46 -05:00
bec00ec825 fix: remove AllowCredentials check for allow origins (#16) 2017-02-27 14:30:00 +08:00
79e0d17cc9 fix: assert arguments error. (#15) 2017-02-27 08:34:08 +08:00
da1a40b05a Merge pull request #13 from gin-contrib/test
fix testing from #11
2016-12-29 16:16:41 +08:00
a22aeebf59 fix testing.
Signed-off-by: Bo-Yi Wu <appleboy.tw@gmail.com>
2016-12-28 07:22:26 +08:00
dbbc835584 Fix logic error for when setting allowedAllOrigins and allowedCredentials
`Access-Control-Allow-Origin` should returning `Origin` originally of
requests when allowCredentials and allowAllOrigins.
2016-12-28 06:57:52 +08:00
d075cad469 update golang testing to 1.6.4 and 1.7.4
Signed-off-by: Bo-Yi Wu <appleboy.tw@gmail.com>
2016-12-05 22:52:08 +08:00
3f5d6253cd [ci skip] update gin gitter link.
Signed-off-by: Bo-Yi Wu <appleboy.tw@gmail.com>
2016-12-01 16:50:15 +08:00
57b7130fd8 [ci skip] remove empty line.
Signed-off-by: Bo-Yi Wu <appleboy.tw@gmail.com>
2016-12-01 16:46:05 +08:00
6 changed files with 43 additions and 34 deletions

View File

@ -2,9 +2,9 @@ language: go
sudo: false
go:
- 1.5.4
- 1.6.3
- 1.7.3
- 1.6.x
- 1.7.x
- 1.8.x
- tip
script:

View File

@ -4,8 +4,7 @@
[![codecov](https://codecov.io/gh/gin-contrib/cors/branch/master/graph/badge.svg)](https://codecov.io/gh/gin-contrib/cors)
[![Go Report Card](https://goreportcard.com/badge/github.com/gin-contrib/cors)](https://goreportcard.com/report/github.com/gin-contrib/cors)
[![GoDoc](https://godoc.org/github.com/gin-contrib/cors?status.svg)](https://godoc.org/github.com/gin-contrib/cors)
[![Join the chat at https://gitter.im/gin-gonic/gin](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/gin-gonic/gin?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
[![Join the chat at https://gitter.im/gin-gonic/gin](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/gin-gonic/gin)
Gin middleware/handler to enable CORS support.
@ -34,7 +33,7 @@ import (
"time"
"gopkg.in/gin-contrib/cors.v1"
"gopkg.in/gin-gonic/gin.v1"
"github.com/gin-gonic/gin"
)
func main() {

View File

@ -3,11 +3,12 @@ package cors
import (
"net/http"
"gopkg.in/gin-gonic/gin.v1"
"github.com/gin-gonic/gin"
)
type cors struct {
allowAllOrigins bool
allowCredentials bool
allowOriginFunc func(string) bool
allowOrigins []string
exposeHeaders []string
@ -22,6 +23,7 @@ func newCors(config Config) *cors {
return &cors{
allowOriginFunc: config.AllowOriginFunc,
allowAllOrigins: config.AllowAllOrigins,
allowCredentials: config.AllowCredentials,
allowOrigins: normalize(config.AllowOrigins),
normalHeaders: generateNormalHeaders(config),
preflightHeaders: generatePreflightHeaders(config),

View File

@ -5,7 +5,7 @@ import (
"strings"
"time"
"gopkg.in/gin-gonic/gin.v1"
"github.com/gin-gonic/gin"
)
// Config represents all available options for the middleware.

View File

@ -7,8 +7,8 @@ import (
"testing"
"time"
"github.com/gin-gonic/gin"
"github.com/stretchr/testify/assert"
"gopkg.in/gin-gonic/gin.v1"
)
func init() {
@ -217,7 +217,7 @@ func TestPassesAllowedOrigins(t *testing.T) {
AllowMethods: []string{" GeT ", "get", "post", "PUT ", "Head", "POST"},
AllowHeaders: []string{"Content-type", "timeStamp "},
ExposeHeaders: []string{"Data", "x-User"},
AllowCredentials: true,
AllowCredentials: false,
MaxAge: 12 * time.Hour,
AllowOriginFunc: func(origin string) bool {
return origin == "http://github.com"
@ -226,37 +226,43 @@ func TestPassesAllowedOrigins(t *testing.T) {
// no CORS request, origin == ""
w := performRequest(router, "GET", "")
assert.Equal(t, w.Body.String(), "get")
assert.Equal(t, "get", w.Body.String())
assert.Empty(t, w.Header().Get("Access-Control-Allow-Origin"))
assert.Empty(t, w.Header().Get("Access-Control-Allow-Credentials"))
assert.Empty(t, w.Header().Get("Access-Control-Expose-Headers"))
// allowed CORS request
w = performRequest(router, "GET", "http://google.com")
assert.Equal(t, w.Body.String(), "get")
assert.Equal(t, w.Header().Get("Access-Control-Allow-Origin"), "http://google.com")
assert.Equal(t, w.Header().Get("Access-Control-Allow-Credentials"), "true")
assert.Equal(t, w.Header().Get("Access-Control-Expose-Headers"), "Data,X-User")
assert.Equal(t, "get", w.Body.String())
assert.Equal(t, "http://google.com", w.Header().Get("Access-Control-Allow-Origin"))
assert.Equal(t, "", w.Header().Get("Access-Control-Allow-Credentials"))
assert.Equal(t, "Data,X-User", w.Header().Get("Access-Control-Expose-Headers"))
w = performRequest(router, "GET", "http://github.com")
assert.Equal(t, "get", w.Body.String())
assert.Equal(t, "http://github.com", w.Header().Get("Access-Control-Allow-Origin"))
assert.Equal(t, "", w.Header().Get("Access-Control-Allow-Credentials"))
assert.Equal(t, "Data,X-User", w.Header().Get("Access-Control-Expose-Headers"))
// deny CORS request
w = performRequest(router, "GET", "https://google.com")
assert.Equal(t, w.Code, 403)
assert.Equal(t, 403, w.Code)
assert.Empty(t, w.Header().Get("Access-Control-Allow-Origin"))
assert.Empty(t, w.Header().Get("Access-Control-Allow-Credentials"))
assert.Empty(t, w.Header().Get("Access-Control-Expose-Headers"))
// allowed CORS prefligh request
w = performRequest(router, "OPTIONS", "http://github.com")
assert.Equal(t, w.Code, 200)
assert.Equal(t, w.Header().Get("Access-Control-Allow-Origin"), "http://github.com")
assert.Equal(t, w.Header().Get("Access-Control-Allow-Credentials"), "true")
assert.Equal(t, w.Header().Get("Access-Control-Allow-Methods"), "GET,POST,PUT,HEAD")
assert.Equal(t, w.Header().Get("Access-Control-Allow-Headers"), "Content-Type,Timestamp")
assert.Equal(t, w.Header().Get("Access-Control-Max-Age"), "43200")
assert.Equal(t, 200, w.Code)
assert.Equal(t, "http://github.com", w.Header().Get("Access-Control-Allow-Origin"))
assert.Equal(t, "", w.Header().Get("Access-Control-Allow-Credentials"))
assert.Equal(t, "GET,POST,PUT,HEAD", w.Header().Get("Access-Control-Allow-Methods"))
assert.Equal(t, "Content-Type,Timestamp", w.Header().Get("Access-Control-Allow-Headers"))
assert.Equal(t, "43200", w.Header().Get("Access-Control-Max-Age"))
// deny CORS prefligh request
w = performRequest(router, "OPTIONS", "http://example.com")
assert.Equal(t, w.Code, 403)
assert.Equal(t, 403, w.Code)
assert.Empty(t, w.Header().Get("Access-Control-Allow-Origin"))
assert.Empty(t, w.Header().Get("Access-Control-Allow-Credentials"))
assert.Empty(t, w.Header().Get("Access-Control-Allow-Methods"))
@ -276,24 +282,26 @@ func TestPassesAllowedAllOrigins(t *testing.T) {
// no CORS request, origin == ""
w := performRequest(router, "GET", "")
assert.Equal(t, w.Body.String(), "get")
assert.Equal(t, "get", w.Body.String())
assert.Empty(t, w.Header().Get("Access-Control-Allow-Origin"))
assert.Empty(t, w.Header().Get("Access-Control-Allow-Credentials"))
assert.Empty(t, w.Header().Get("Access-Control-Expose-Headers"))
assert.Empty(t, w.Header().Get("Access-Control-Allow-Credentials"))
// allowed CORS request
w = performRequest(router, "POST", "example.com")
assert.Equal(t, w.Body.String(), "post")
assert.Equal(t, w.Header().Get("Access-Control-Allow-Origin"), "*")
assert.Equal(t, w.Header().Get("Access-Control-Expose-Headers"), "Data2,X-User2")
assert.Equal(t, "post", w.Body.String())
assert.Equal(t, "*", w.Header().Get("Access-Control-Allow-Origin"))
assert.Equal(t, "Data2,X-User2", w.Header().Get("Access-Control-Expose-Headers"))
assert.Empty(t, w.Header().Get("Access-Control-Allow-Credentials"))
assert.Equal(t, "*", w.Header().Get("Access-Control-Allow-Origin"))
// allowed CORS prefligh request
w = performRequest(router, "OPTIONS", "https://facebook.com")
assert.Equal(t, w.Code, 200)
assert.Equal(t, w.Header().Get("Access-Control-Allow-Origin"), "*")
assert.Equal(t, w.Header().Get("Access-Control-Allow-Methods"), "PATCH,GET,POST")
assert.Equal(t, w.Header().Get("Access-Control-Allow-Headers"), "Content-Type,Testheader")
assert.Equal(t, w.Header().Get("Access-Control-Max-Age"), "36000")
assert.Equal(t, 200, w.Code)
assert.Equal(t, "*", w.Header().Get("Access-Control-Allow-Origin"))
assert.Equal(t, "PATCH,GET,POST", w.Header().Get("Access-Control-Allow-Methods"))
assert.Equal(t, "Content-Type,Testheader", w.Header().Get("Access-Control-Allow-Headers"))
assert.Equal(t, "36000", w.Header().Get("Access-Control-Max-Age"))
assert.Empty(t, w.Header().Get("Access-Control-Allow-Credentials"))
}

View File

@ -3,8 +3,8 @@ package main
import (
"time"
"gopkg.in/gin-contrib/cors.v1"
"gopkg.in/gin-gonic/gin.v1"
"github.com/gin-contrib/cors"
"github.com/gin-gonic/gin"
)
func main() {