Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I add CORS-Headers to a static connect server?

Tags:

I am writing a little demo web server delivering static html,css and javascript. The server looks like

(function () {     "use strict";      var http = require("http");     var connect = require('connect');     var app = connect()         .use(connect.logger('dev'))         .use(connect.static('home'));      var server = http.createServer(app);     server.listen(9999, function () {         console.log('server is listening');     }); })(); 

My client side javascript makes ajax calls to a different server. How can I add

Access-Control-Allow-Origin: http://example.com 

to my server response, so that the client side javascript can do the ajax call?

like image 698
afx Avatar asked Jun 15 '13 14:06

afx


People also ask

How do I add CORS support to API?

You can add CORS support to an API proxy by attaching an "Add CORS" policy to the API proxy when you create it. To add this policy, select the Add CORS headers checkbox in the Security page of the Build a Proxy wizard.

How do I enable CORS in REST API?

Enable CORS support on a REST API resourceSign in to the API Gateway console at https://console.aws.amazon.com/apigateway . Choose the API from the APIs list. Choose a resource under Resources. This will enable CORS for all the methods on the resource.


1 Answers

Had a bit of trouble figuring this one out since express has spoiled me.

Take a look at enable cors. Basically what you need to be doing is add Access-Control-Allow-Origin to the domain you want to enable cors on. response.setHeaders is perfect for this task.

Another thing to note is that connect has no way to handle routes. If your app needs to have different routes then you will probably have to write logic for each of them and add res headers to the ones on which you want to enable cors. You can use req.url for it.

var http = require("http"); var connect = require('connect');  var app = connect()      .use(connect.logger('dev'))      .use(connect.static('home'))      .use(function(req, res){      res.setHeader("Access-Control-Allow-Origin", "http://example.com");     res.end('hello world\n');   });  var server = http.createServer(app);  server.listen(9999, function () {      console.log('server is listening'); }); 

This is the response I got in chrome dev tools

HTTP/1.1 200 OK Access-Control-Allow-Origin: http://example.com Date: Sat, 15 Jun 2013 16:01:59 GMT Connection: keep-alive Transfer-Encoding: chunked 
like image 139
Akshat Jiwan Sharma Avatar answered Oct 22 '22 19:10

Akshat Jiwan Sharma