From b042c708851bf1ef87386a199a5b084c50306440 Mon Sep 17 00:00:00 2001 From: Nicolas Favre-Felix Date: Wed, 5 Jan 2011 16:41:31 +0100 Subject: [PATCH] Added CORS --- server.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/server.c b/server.c index aa2a2a0..141b985 100644 --- a/server.c +++ b/server.c @@ -114,6 +114,22 @@ on_flash_request(struct evhttp_request *rq, void *ctx) { evbuffer_free(body); } +#ifdef _EVENT2_HTTP_H_ +/* reply to OPTIONS HTTP verb */ +static int +on_options(struct evhttp_request *rq) { + + evhttp_add_header(rq->output_headers, "Content-Type", "text/html"); + evhttp_add_header(rq->output_headers, "Allow", "GET,POST,OPTIONS"); + + /* Cross-Origin Resource Sharing, CORS. */ + evhttp_add_header(rq->output_headers, "Access-Control-Allow-Origin", "*"); + evhttp_send_reply(rq, 200, "OK", body); + + return 1; +} +#endif + void on_request(struct evhttp_request *rq, void *ctx) { @@ -138,6 +154,11 @@ on_request(struct evhttp_request *rq, void *ctx) { EVBUFFER_LENGTH(rq->input_buffer)); break; +#ifdef _EVENT2_HTTP_H_ + case EVHTTP_REQ_OPTIONS: + return on_options(rq); +#endif + default: evhttp_send_reply(rq, 405, "Method Not Allowed", NULL); return;