connect(node.js)中的访问控制源

我通过连接运行静态页面

var connect = require('connect'); connect.createServer( connect.static(__dirname)).listen(8080); 

我必须在上面的代码中添加一个响应标题来绕过访问控制

  response.writeHead(200, { 'Content-Type': 'text/html', 'Access-Control-Allow-Origin' : '*'}); 

我如何将它添加到上面的连接代码。

我在这里回答了这个问题

相关的代码

 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'); }); 

启用cors为将cors添加到您的服务器提供了极好的资源。

如果你需要发送每个服务的静态文件头文件,你必须使用连接,然后执行此操作

导航到connect\node_modules\send\lib\send.js

在文件中查找setHeader函数。 这是实际将标题设置为静态资源的函数。 只需添加

res.setHeader("Access-Control-Allow-Origin", "your domain");

并且你的所有文件都有Cors标头

如果您只是使用连接来提供静态文件,而不需要任何其他function,请考虑使用send 。 这样你就可以直接访问所有的方法,不需要编辑文件。 您可以简单地从您的创build服务器方法添加标题。 这里是示例代码

 var http = require("http"); var connect = require('connect'); var send = require('send'); var url = require('url'); var app = http.createServer(function(req, res){ // your custom error-handling logic: function error(err) { res.statusCode = err.status || 500; res.end(err.message); } // your custom directory handling logic: function redirect() { res.statusCode = 301; res.setHeader('Location', req.url + '/'); res.end('Redirecting to ' + req.url + '/'); } function setRoot(){ res.setHeader("Access-Control-Allow-Origin", "http://example.com"); return './public'; } function setIndex(){ res.setHeader("Access-Control-Allow-Origin", "http://example.com"); return '/index.html'; } send(req, url.parse(req.url).pathname) .root(setRoot()).index(setIndex()) .on('error', error) .on('directory', redirect) .pipe(res); }).listen(3000);