Always set CORS headers at beginning of API handler.

Change-Id: Icde9a74260c4bb919f09c3e10c6dd5f372ccdaec
This commit is contained in:
Julius Volz 2013-10-16 15:59:47 +02:00
parent c7daedc840
commit a50ee8df30
1 changed files with 8 additions and 5 deletions

View File

@ -38,6 +38,9 @@ func (serv MetricsService) setAccessControlHeaders(rb *gorest.ResponseBuilder) {
} }
func (serv MetricsService) Query(expr string, asText string) string { func (serv MetricsService) Query(expr string, asText string) string {
rb := serv.ResponseBuilder()
serv.setAccessControlHeaders(rb)
exprNode, err := rules.LoadExprFromString(expr) exprNode, err := rules.LoadExprFromString(expr)
if err != nil { if err != nil {
return ast.ErrorToJSON(err) return ast.ErrorToJSON(err)
@ -45,8 +48,6 @@ func (serv MetricsService) Query(expr string, asText string) string {
timestamp := serv.time.Now() timestamp := serv.time.Now()
rb := serv.ResponseBuilder()
serv.setAccessControlHeaders(rb)
var format ast.OutputFormat var format ast.OutputFormat
// BUG(julius): Use Content-Type negotiation. // BUG(julius): Use Content-Type negotiation.
if asText == "" { if asText == "" {
@ -64,6 +65,9 @@ func (serv MetricsService) Query(expr string, asText string) string {
} }
func (serv MetricsService) QueryRange(expr string, end int64, duration int64, step int64) string { func (serv MetricsService) QueryRange(expr string, end int64, duration int64, step int64) string {
rb := serv.ResponseBuilder()
serv.setAccessControlHeaders(rb)
exprNode, err := rules.LoadExprFromString(expr) exprNode, err := rules.LoadExprFromString(expr)
if err != nil { if err != nil {
return ast.ErrorToJSON(err) return ast.ErrorToJSON(err)
@ -71,8 +75,6 @@ func (serv MetricsService) QueryRange(expr string, end int64, duration int64, st
if exprNode.Type() != ast.VECTOR { if exprNode.Type() != ast.VECTOR {
return ast.ErrorToJSON(errors.New("Expression does not evaluate to vector type")) return ast.ErrorToJSON(errors.New("Expression does not evaluate to vector type"))
} }
rb := serv.ResponseBuilder()
serv.setAccessControlHeaders(rb)
rb.SetContentType(gorest.Application_Json) rb.SetContentType(gorest.Application_Json)
if end == 0 { if end == 0 {
@ -118,9 +120,10 @@ func (serv MetricsService) QueryRange(expr string, end int64, duration int64, st
} }
func (serv MetricsService) Metrics() string { func (serv MetricsService) Metrics() string {
metricNames, err := serv.Storage.GetAllValuesForLabel(clientmodel.MetricNameLabel)
rb := serv.ResponseBuilder() rb := serv.ResponseBuilder()
serv.setAccessControlHeaders(rb) serv.setAccessControlHeaders(rb)
metricNames, err := serv.Storage.GetAllValuesForLabel(clientmodel.MetricNameLabel)
rb.SetContentType(gorest.Application_Json) rb.SetContentType(gorest.Application_Json)
if err != nil { if err != nil {
glog.Error("Error loading metric names: ", err) glog.Error("Error loading metric names: ", err)