Skip to content

Commit

Permalink
fix(cors) return HTTP 200 instead of 204 for preflight requests
Browse files Browse the repository at this point in the history
User agents seem to not honour HTTP 204 as a valid response
status code for preflight requests. Therefore, we now return
HTTP 200 which is instructed by Mozilla guidelines.

Fix #4008
From #4029
  • Loading branch information
aslafy-z authored and thibaultcha committed Nov 30, 2018
1 parent d41f0a3 commit da8b4c2
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 12 deletions.
4 changes: 2 additions & 2 deletions kong/plugins/cors/handler.lua
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ local tostring = tostring
local ipairs = ipairs


local NO_CONTENT = 204
local HTTP_OK = 200


local CorsHandler = BasePlugin:extend()
Expand Down Expand Up @@ -137,7 +137,7 @@ function CorsHandler:access(conf)
set_header("Access-Control-Max-Age", tostring(conf.max_age))
end

return kong.response.exit(NO_CONTENT)
return kong.response.exit(HTTP_OK)
end


Expand Down
15 changes: 10 additions & 5 deletions spec-old-api/03-plugins/14-cors/01-access_spec.lua
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,8 @@ describe("Plugin: cors (access)", function()
["Host"] = "cors1.com"
}
})
assert.res_status(204, res)
assert.res_status(200, res)
assert.equal("0", res.headers["Content-Length"])
assert.equal("GET,HEAD,PUT,PATCH,POST,DELETE", res.headers["Access-Control-Allow-Methods"])
assert.equal("*", res.headers["Access-Control-Allow-Origin"])
assert.is_nil(res.headers["Access-Control-Allow-Headers"])
Expand All @@ -182,7 +183,8 @@ describe("Plugin: cors (access)", function()
["Host"] = "cors-empty-origins.com",
}
})
assert.res_status(204, res)
assert.res_status(200, res)
assert.equal("0", res.headers["Content-Length"])
assert.equal("GET,HEAD,PUT,PATCH,POST,DELETE", res.headers["Access-Control-Allow-Methods"])
assert.equal("*", res.headers["Access-Control-Allow-Origin"])
assert.is_nil(res.headers["Access-Control-Allow-Headers"])
Expand All @@ -198,7 +200,8 @@ describe("Plugin: cors (access)", function()
["Host"] = "cors5.com"
}
})
assert.res_status(204, res)
assert.res_status(200, res)
assert.equal("0", res.headers["Content-Length"])
assert.equal("GET,HEAD,PUT,PATCH,POST,DELETE", res.headers["Access-Control-Allow-Methods"])
assert.equal("*", res.headers["Access-Control-Allow-Origin"])
assert.is_nil(res.headers["Access-Control-Allow-Headers"])
Expand All @@ -214,7 +217,8 @@ describe("Plugin: cors (access)", function()
["Host"] = "cors2.com"
}
})
assert.res_status(204, res)
assert.res_status(200, res)
assert.equal("0", res.headers["Content-Length"])
assert.equal("GET", res.headers["Access-Control-Allow-Methods"])
assert.equal("example.com", res.headers["Access-Control-Allow-Origin"])
assert.equal("23", res.headers["Access-Control-Max-Age"])
Expand Down Expand Up @@ -245,7 +249,8 @@ describe("Plugin: cors (access)", function()
}
})

assert.res_status(204, res)
assert.res_status(200, res)
assert.equal("0", res.headers["Content-Length"])
assert.equal("origin,accepts", res.headers["Access-Control-Allow-Headers"])
end)
end)
Expand Down
15 changes: 10 additions & 5 deletions spec/03-plugins/14-cors/01-access_spec.lua
Original file line number Diff line number Diff line change
Expand Up @@ -201,7 +201,8 @@ for _, strategy in helpers.each_strategy() do
["Host"] = "cors1.com"
}
})
assert.res_status(204, res)
assert.res_status(200, res)
assert.equal("0", res.headers["Content-Length"])
assert.equal("GET,HEAD,PUT,PATCH,POST,DELETE", res.headers["Access-Control-Allow-Methods"])
assert.equal("*", res.headers["Access-Control-Allow-Origin"])
assert.is_nil(res.headers["Access-Control-Allow-Headers"])
Expand All @@ -224,7 +225,8 @@ for _, strategy in helpers.each_strategy() do
["Host"] = "cors-empty-origins.com",
}
})
assert.res_status(204, res)
assert.res_status(200, res)
assert.equal("0", res.headers["Content-Length"])
assert.equal("GET,HEAD,PUT,PATCH,POST,DELETE", res.headers["Access-Control-Allow-Methods"])
assert.equal("*", res.headers["Access-Control-Allow-Origin"])
assert.is_nil(res.headers["Access-Control-Allow-Headers"])
Expand All @@ -241,7 +243,8 @@ for _, strategy in helpers.each_strategy() do
["Host"] = "cors5.com"
}
})
assert.res_status(204, res)
assert.res_status(200, res)
assert.equal("0", res.headers["Content-Length"])
assert.equal("GET,HEAD,PUT,PATCH,POST,DELETE", res.headers["Access-Control-Allow-Methods"])
assert.equal("*", res.headers["Access-Control-Allow-Origin"])
assert.is_nil(res.headers["Access-Control-Allow-Headers"])
Expand All @@ -258,7 +261,8 @@ for _, strategy in helpers.each_strategy() do
["Host"] = "cors2.com"
}
})
assert.res_status(204, res)
assert.res_status(200, res)
assert.equal("0", res.headers["Content-Length"])
assert.equal("GET", res.headers["Access-Control-Allow-Methods"])
assert.equal("example.com", res.headers["Access-Control-Allow-Origin"])
assert.equal("23", res.headers["Access-Control-Max-Age"])
Expand Down Expand Up @@ -290,7 +294,8 @@ for _, strategy in helpers.each_strategy() do
}
})

assert.res_status(204, res)
assert.res_status(200, res)
assert.equal("0", res.headers["Content-Length"])
assert.equal("origin,accepts", res.headers["Access-Control-Allow-Headers"])
end)
end)
Expand Down

0 comments on commit da8b4c2

Please sign in to comment.