<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # CORS(訪問控制) 中間件 CORS 中間件實現了 CORS 的標準。CORS 提供給 web 服務器跨站的訪問控制,使得跨站的數據傳輸更安全。 ## Install ``` go get -u github.com/devfeel/middleware ``` ## Code: ``` import "github.com/devfeel/middleware/cors" // 設置cors選項 option := cros.NewConfig().UseDefault() server.GET("/", Index).Use(cors.Middleware(option)) ``` ## Config: ### UseDefault `string` 對config啟用預設的默認值: * enabledCROS = true * HeaderAccessControlAllowOrigin = "*" * HeaderAccessControlAllowMethods = "GET, POST, PUT, DELETE, OPTIONS" * HeaderAccessControlAllowHeaders = "Content-Type" * HeaderP3P = "CP=\"CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR\"" ### Enabled 設置cros參數生效,確保其會寫入Response.Header ### SetOrigin `string` * 對應Access-Control-Allow-Origin * 該字段是必須的。它的值要么是請求時Origin字段的值,要么是一個*,表示接受任意域名的請求。 ### SetMethod `string` * 對應Access-Control-Allow-Methods * 該字段必需,它的值是逗號分隔的一個字符串,表明服務器支持的所有跨域請求的方法。注意,返回的是所有支持的方法,而不單是瀏覽器請求的那個方法。這是為了避免多次"預檢"請求。 ### SetHeader `string` * 對應Access-Control-Allow-Headers * 如果瀏覽器請求包括Access-Control-Request-Headers字段,則Access-Control-Allow-Headers字段是必需的。它也是一個逗號分隔的字符串,表明服務器支持的所有頭信息字段,不限于瀏覽器在"預檢"中請求的字段。 ### SetExposeHeaders `string` * 對應Access-Control-Expose-Headers * 該字段可選。CORS請求時,XMLHttpRequest對象的getResponseHeader()方法只能拿到6個基本字段 * Cache-Control、Content-Language、Content-Type、Expires、Last-Modified、Pragma * 如果想拿到其他字段,就必須在Access-Control-Expose-Headers里面指定 ### SetAllowCredentials `string` * 對應Access-Control-Allow-Credentials * 該字段可選。它的值是一個布爾值,表示是否允許發送Cookie。默認情況下,Cookie不包括在CORS請求之中。設為true,即表示服務器明確許可 #### SetMaxAge `int` * 對應Access-Control-Max-Age * 該字段可選,用來指定本次預檢請求的有效期,單位為秒。上面結果中,有效期是20天(1728000秒),即允許緩存該條回應1728000秒(即20天),在此期間,不用發出另一條預檢請求。 ### SetP3P `string` * 對應P3P * P3P(Platform for Privacy Preferences) ## 服務器代碼: ~~~ package main import ( "fmt" "github.com/devfeel/dotweb" "github.com/devfeel/middleware/cors" ) func main() { //初始化DotServer app := dotweb.New() app.SetEnabledLog(true) //開啟development模式 app.SetDevelopmentMode() //設置路由 InitRoute(app.HttpServer) // 開始服務 port := 8080 err := app.StartServer(port) if err != nil { fmt.Println("dotweb.StartServer error => ", err) } } func Index(ctx dotweb.Context) error { ctx.WriteString("Index: ", dotweb.HeaderAccessControlAllowMethods, " => ", ctx.Response().QueryHeader(dotweb.HeaderAccessControlAllowMethods)) return nil } func Simple(ctx dotweb.Context) error { return ctx.WriteString("Simple: ", dotweb.HeaderAccessControlAllowMethods, " => ", ctx.RouterNode(), " => ", ctx.Response().QueryHeader(dotweb.HeaderAccessControlAllowMethods)) } func NoCros(ctx dotweb.Context) error { return ctx.WriteString("NoCros: ", dotweb.HeaderAccessControlAllowMethods, " => ", ctx.Response().QueryHeader(dotweb.HeaderAccessControlAllowMethods)) } func InitRoute(server *dotweb.HttpServer) { server.Router().GET("/", Index).Use(NewCustomCROS()) server.GET("/simple", Simple).Use(NewSimpleCROS()) server.Router().GET("/nocros", NoCros) } // NewSimpleCROS // default config: // enabledCROS = true // allowedOrigins = "*" // allowedMethods = "GET, POST, PUT, DELETE, OPTIONS" // allowedHeaders = "Content-Type" // allowedP3P = "CP=\"CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR\"" func NewSimpleCROS() dotweb.Middleware { option := cors.NewConfig().UseDefault() return cors.Middleware(option) } func NewCustomCROS() dotweb.Middleware { option := cors.NewConfig() option.SetHeader("Content-Type") option.SetMethod("GET, POST") option.Enabled() return cors.Middleware(option) } ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看