func Cors(c *gin.Context) {
	c.Header("Access-Control-Allow-Origin", "*")                                       
	c.Header("Access-Control-Allow-Methods", "GET, POST, PATCH, PUT, DELETE,OPTIONS")  
	c.Header("Access-Control-Allow-Credentials", "true")                               
	c.Header("Connection", "keep-alive")                                               
	c.Header("Access-Control-Max-Age", "3600")                                         
	c.Header("Access-Control-Allow-Headers", "Authorization, Content-Type, If-Match, If-Modified-Since, If-None-Match, If-Unmodified-Since, X-Requested-With")
	c.Header("Strict-Transport-Security", " max-age=63072000; includeSubdomains; preload")
	if c.Request.Method == "OPTIONS" {
		c.AbortWithStatus(http.StatusNoContent)
	}
	c.Next()
}
Cors Cross-domain request
package request
import (
	"bytes"
	"encoding/json"
	"github.com/gin-gonic/gin"
	"github.com/small-ek/antgo/conv"
	"github.com/small-ek/antgo/os/logs"
	"io/ioutil"
	"net/http"
)
type PageParam struct {
	CurrentPage int                    `form:"current_page" json:"current_page" bson:"current_page" xml:"current_page" yaml:"current_page"`
	PageSize    int                    `form:"page_size" json:"page_size" bson:"page_size" xml:"page_size" yaml:"page_size"`
	Total       int64                  `form:"total" json:"total" bson:"total" xml:"total" yaml:"total"`
	Filter      []string               `form:"filter[]" json:"filter[]" bson:"filter[]" xml:"filter[]" yaml:"filter[]"`
	Order       string                 `form:"order" json:"order" bson:"order" xml:"order" yaml:"order"`
	Select      []string               `form:"select[]" json:"select[]" bson:"select[]" xml:"select[]" yaml:"select[]"`
	Group       string                 `form:"group" json:"group" bson:"group" xml:"group" yaml:"group"`
	Omit        string                 `form:"omit" json:"omit" bson:"omit" xml:"omit" yaml:"omit"`
	Extra       map[string]interface{} `form:"extra" json:"extra" bson:"extra" xml:"extra" yaml:"extra"`
}
func DefaultPage() PageParam {
	return PageParam{
		CurrentPage: 1,
		PageSize:    10,
	}
}
func GetBody(c *gin.Context) map[string]interface{} {
	var request map[string]interface{}
	var body []byte
	if c.Request.Body != nil {
		body, _ = ioutil.ReadAll(c.Request.Body)
		c.Request.Body = ioutil.NopCloser(bytes.NewBuffer(body))
	}
	var err = json.Unmarshal(body, &request)
	if err != nil {
		logs.Error(err.Error())
	}
	return request
}
func Query(name string, c *gin.Context) string {
	return c.Query(name)
}
func QueryArray(name string, c *gin.Context) []string {
	return c.QueryArray(name)
}
func QueryMap(name string, c *gin.Context) map[string]string {
	return c.QueryMap(name)
}
func Param(name string, c *gin.Context) string {
	return c.Param(name)
}
func GetInterface(name string, c *gin.Context) interface{} {
	var request = GetBody(c)
	return request[name]
}
func GetString(name string, c *gin.Context) string {
	var request = GetBody(c)
	return conv.String(request[name])
}
func GetBool(name string, c *gin.Context) bool {
	var request = GetBody(c)
	return conv.Bool(request[name])
}
func GetUint(name string, c *gin.Context) uint {
	var request = GetBody(c)
	return conv.Uint(request[name])
}
func GetUint8(name string, c *gin.Context) uint8 {
	var request = GetBody(c)
	return conv.Uint8(request[name])
}
func GetUint16(name string, c *gin.Context) uint16 {
	var request = GetBody(c)
	return conv.Uint16(request[name])
}
func GetUint32(name string, c *gin.Context) uint32 {
	var request = GetBody(c)
	return conv.Uint32(request[name])
}
func GetUint64(name string, c *gin.Context) uint64 {
	var request = GetBody(c)
	return conv.Uint64(request[name])
}
func GetFloat32(name string, c *gin.Context) float32 {
	var request = GetBody(c)
	return conv.Float32(request[name])
}
func GetFloat64(name string, c *gin.Context) float64 {
	var request = GetBody(c)
	return conv.Float64(request[name])
}
func GetInt(name string, c *gin.Context) int {
	var request = GetBody(c)
	return conv.Int(request[name])
}
func GetInt8(name string, c *gin.Context) int8 {
	var request = GetBody(c)
	return conv.Int8(request[name])
}
func GetInt16(name string, c *gin.Context) int16 {
	var request = GetBody(c)
	return conv.Int16(request[name])
}
func GetInt32(name string, c *gin.Context) int32 {
	var request = GetBody(c)
	return conv.Int32(request[name])
}
func GetInt64(name string, c *gin.Context) int64 {
	var request = GetBody(c)
	return conv.Int64(request[name])
}