I\'m not able to correctly handle CORS issues when doing either PATCH
/POST
/PUT
requests from the browser sending an Authorization
I was able to bypass this issue using micro-cors.
I checked its code and it doesn't differ that much of what I attempted to do myself by using res.setHeader
manually, probably missed something I guess.
Nevertheless I don't understand why the settings in now.json
were not working correctly and I need to perform this manually in the serverless function.
Anyways, in case someone else finds this post, I ended up with something like this:
import micro from "micro-cors";
function MyApi(req, res) {
if (req.method === "OPTIONS") {
return res.status(200).end();
}
// handling other requests normally after this
}
const cors = micro();
export default cors(MyApi);
I'll probably will try again with a self-written solution in order to understand better what went wrong and also because I don't want an extra dependency.
Will update this answer if I do that.
Edit: After checking a bit deeper I found that another issue was the library express-jwt
specifically changing the res
object when the jwt
parse failed.
I had a small middleware that was breaking everything by doing:
await authValidateMiddleware(req, res);
When that await
failed, it broke everything down the line because express-jwt
changed the res
headers unknowingly (setting the error) and then I tried to set the res
headers manually trying to handle the error correctly myself, therefore throwing issues about "changing the res
headers more than once".