一尘不染

如何将CORS标头添加到静态连接服务器?

node.js

我正在写一些演示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调用?


阅读 312

收藏
2020-07-07

共1个答案

一尘不染

自从Express宠坏了我以来,弄清楚这个问题有点麻烦。

看看enable cors。基本上,您需要做的是添加Access-Control-Allow- Origin到要启用cors的域中。response.setHeaders非常适合此任务。

要注意的另一件事是,connect无法处理路由。如果您的应用程序需要使用不同的路由,则可能必须为每个路由编写逻辑,并将res标头添加到要启用cors的标头。您可以使用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
2020-07-07