使用gin-swagger出现
Failed to fetch. Possible Reasons:
CORS
Network Failure
URL scheme must be “http” or “https” for CORS request
解决方案
原因:跨域问题导致
解决方法:
添加Cors中间件,代码如下
func Cors ( ) gin. HandlerFunc {
return func ( c * gin. Context) {
method := c. Request. Method
origin := c. Request. Header. Get ( "Origin" )
var headerKeys [ ] string
for k, _ := range c. Request. Header {
headerKeys = append ( headerKeys, k)
}
headerStr := strings. Join ( headerKeys, ", " )
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"
}
if origin != "" {
c. Writer. Header ( ) . Set ( "Access-Control-Allow-Origin" , "*" )
c. Header ( "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" )
c. Set ( "content-type" , "application/json" )
}
if method == "OPTIONS" {
c. AbortWithStatus ( 204 )
return
}
c. Next ( )
}
}
在路由注册界面引入Cors中间件即可
r := gin. New ( )
r. Use ( middelwares. Cors ( ) )