From 030fa4272f91d0cd435caf3ec785f2605487c7f4 Mon Sep 17 00:00:00 2001
From: ale <ale@incal.net>
Date: Sat, 17 Oct 2020 18:43:31 +0100
Subject: [PATCH] Try to handle CORS preflight requests

---
 collector.go | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/collector.go b/collector.go
index d1928fa..8b785d0 100644
--- a/collector.go
+++ b/collector.go
@@ -33,7 +33,16 @@ func NewCollector(sink Sink, handlers ...Handler) *Collector {
 }
 
 func (c *Collector) ServeHTTP(w http.ResponseWriter, req *http.Request) {
-	if req.Method != http.MethodPost {
+	switch req.Method {
+	case http.MethodPost:
+	case http.MethodOptions:
+		w.Header().Set("Access-Control-Allow-Origin", "*")
+		w.Header().Set("Access-Control-Allow-Methods", "POST")
+		w.Header().Set("Access-Control-Allow-Headers", "content-type")
+		w.Header().Set("Access-Control-Max-Age", "86400")
+		w.WriteHeader(http.StatusNoContent)
+		return
+	default:
 		http.Error(w, "Bad method", http.StatusMethodNotAllowed)
 		return
 	}
@@ -56,7 +65,7 @@ hloop:
 		case ErrNoMatch:
 			continue
 		case nil:
-			w.WriteHeader(http.StatusNoContent)
+			w.WriteHeader(http.StatusOK)
 			break hloop
 		default:
 			log.Printf("error parsing report: %v", err)
-- 
GitLab