我正在写一些演示Web服务器,提供静态html,css和javascript。服务器看起来像
(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'); }); })();
我的客户端javascript使ajax调用到其他服务器。我该如何添加
Access-Control-Allow-Origin: http://example.com
对我的服务器响应,以便客户端javascript可以进行ajax调用?
自从Express宠坏了我以来,弄清楚这个问题有点麻烦。
看看enable cors。基本上,您需要做的是添加Access-Control-Allow- Origin到要启用cors的域中。response.setHeaders非常适合此任务。
Access-Control-Allow- Origin
要注意的另一件事是,connect无法处理路由。如果您的应用程序需要使用不同的路由,则可能必须为每个路由编写逻辑,并将res标头添加到要启用cors的标头。您可以使用req.url它。
req.url
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'); });
这是我在chrome开发工具中得到的回复
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