@cryptotaxi247 / kubo / commits / aaab7d089

commands/http: Allow API requests from whitelisted origins

Matt Bell committed Nov 18, 2014 at 22:16 UTC aaab7d0898cb69097736f00eea2c270e62510401
1 file changed +15 -4
commands/http/handler.go
+15 -4
@@ -12,8 +12,9 @@ import (
12 var log = u.Logger("commands/http")
13
14 type Handler struct {
15 - ctx cmds.Context
16 - root *cmds.Command
15 + ctx cmds.Context
16 + root *cmds.Command
17 + origin string
18 }
19
20 var ErrNotFound = errors.New("404 page not found")
@@ -29,13 +30,23 @@ var mimeTypes = map[string]string{
30 cmds.Text: "text/plain",
31 }
32
32 -func NewHandler(ctx cmds.Context, root *cmds.Command) *Handler {
33 - return &Handler{ctx, root}
33 +func NewHandler(ctx cmds.Context, root *cmds.Command, origin string) *Handler {
34 + // allow whitelisted origins (so we can make API requests from the browser)
35 + if len(origin) > 0 {
36 + log.Info("Allowing API requests from origin: " + origin)
37 + }
38 +
39 + return &Handler{ctx, root, origin}
40 }
41
42 func (i Handler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
43 log.Debug("Incoming API request: ", r.URL)
44
45 + if len(i.origin) > 0 {
46 + w.Header().Set("Access-Control-Allow-Origin", i.origin)
47 + }
48 + w.Header().Set("Access-Control-Allow-Headers", "Content-Type")
49 +
50 req, err := Parse(r, i.root)
51 if err != nil {
52 if err == ErrNotFound {