فهرست منبع

Only accepting 3xx status codes when redirecting. Swapped location and code arguments for Redirect signature

Alexander Nyquist 11 سال پیش
والد
کامیت
64fb835e6f
2فایلهای تغییر یافته به همراه7 افزوده شده و 3 حذف شده
  1. 1 1
      README.md
  2. 6 2
      context.go

+ 1 - 1
README.md

@@ -302,7 +302,7 @@ func main() {
 Issuing a HTTP redirect is easy:
 
 ```r.GET("/test", func(c *gin.Context) {
-	c.Redirect("http://www.google.com/", 302)
+	c.Redirect(301, "http://www.google.com/")
 })
 
 Both internal and external locations are supported.

+ 6 - 2
context.go

@@ -248,8 +248,12 @@ func (c *Context) String(code int, format string, values ...interface{}) {
 }
 
 // Returns a HTTP redirect to the specific location.
-func (c *Context) Redirect(location string, code int) {
-	c.Render(code, render.Redirect, location)
+func (c *Context) Redirect(code int, location string) {
+	if code >= 300 && code <= 308 {
+		c.Render(code, render.Redirect, location)
+	} else {
+		panic(fmt.Sprintf("Cannot send a redirect with status code %d", code))
+	}
 }
 
 // Writes some data into the body stream and updates the HTTP code.