Browse Source

renderer: avoid redirect render requests

closes #11180
bergquist 7 năm trước cách đây
mục cha
commit
6cac7c2de9

+ 3 - 1
pkg/components/renderer/renderer.go

@@ -72,7 +72,9 @@ func RenderToPng(params *RenderOpts) (string, error) {
 		localDomain = setting.HttpAddr
 	}
 
-	url := fmt.Sprintf("%s://%s:%s/%s", setting.Protocol, localDomain, setting.HttpPort, params.Path)
+	// &render=1 signals to the legacy redirect layer to
+	// avoid redirect these requests.
+	url := fmt.Sprintf("%s://%s:%s/%s&render=1", setting.Protocol, localDomain, setting.HttpPort, params.Path)
 
 	binPath, _ := filepath.Abs(filepath.Join(setting.PhantomDir, executable))
 	scriptPath, _ := filepath.Abs(filepath.Join(setting.PhantomDir, "render.js"))

+ 6 - 0
pkg/middleware/dashboard_redirect.go

@@ -6,6 +6,7 @@ import (
 
 	"github.com/grafana/grafana/pkg/bus"
 	m "github.com/grafana/grafana/pkg/models"
+	"github.com/grafana/grafana/pkg/setting"
 	"gopkg.in/macaron.v1"
 )
 
@@ -36,9 +37,14 @@ func RedirectFromLegacyDashboardUrl() macaron.Handler {
 func RedirectFromLegacyDashboardSoloUrl() macaron.Handler {
 	return func(c *m.ReqContext) {
 		slug := c.Params("slug")
+		renderRequest := c.QueryBool("render")
 
 		if slug != "" {
 			if url, err := getDashboardUrlBySlug(c.OrgId, slug); err == nil {
+				if renderRequest && strings.Contains(url, setting.AppSubUrl) {
+					url = strings.Replace(url, setting.AppSubUrl, "", 1)
+				}
+
 				url = strings.Replace(url, "/d/", "/d-solo/", 1)
 				url = fmt.Sprintf("%s?%s", url, c.Req.URL.RawQuery)
 				c.Redirect(url, 301)