Я пробовал пару вещей, и они оба работают на моем локальном хосте (заголовки присутствуют и правильны), но не на живом сервере, который размещен на Amazon, построенном из образа NodeJS bitnami за обратным прокси-сервером apache.
Конфигурации, которые я пробовал:
1) Установите заголовок ответа вручную для каждого необходимого маршрута (чтобы этот код был в файле маршрутизации):
router.options('/:var1/:var2', function(req, res) {
res.setHeader("Access-control-allow-origin", "*");
var db = req.db;
var data = db.get('data');
actions.find({"criteria":req.params.var1}, function(err, docs)
{
res.send(docs);
});
});
2) Использовать промежуточное ПО из NPM (этот код находится в app.js):
//Includes/Requirements
var express = require('express');
var path = require('path');
var favicon = require('static-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var mongodb = require('mongodb');
var monk = require('monk');
var cors = require('cors');
var db = monk('localhost:27017/app');
...
app.use(cors());
Таким образом, при использовании обоих этих методов запросы к localhost:3000 приводят к ожидаемым заголовкам (Access-allow-control-origin:*). Однако, когда я отправляю код на свой рабочий сервер, эти заголовки отсутствуют в ответах.
Любые идеи?