此时我已经阅读了很多文章,并尝试了我能想到的几乎所有配置,以使 CORS 与 Restify 一起工作。我将 restify.CORS()
与 restify.fullResponse()
以及其他所有组合一起使用。我也尝试过仅使用 cors lib (npm install cors) 但无济于事。我的应用程序如下所示:
/**
* Setup middlewares.
*/
server.use(restify.queryParser());
server.use(restify.bodyParser());
server.use(restify.cors());
server.use(restify.fullResponse());
server.use(morgan('dev'));
我还尝试添加选项处理:
server.opts('/\.*/', (req, res, next) => {
res.header('Access-Control-Allow-Methods', 'GET, POST, PUT, OPTIONS, DELETE');
res.send(204);
return next();
});
在每种情况下,我都会回复:
XMLHttpRequest cannot load http://localhost:3000/1.0.0/clients. Response to preflight
request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is
present on the requested resource. Origin 'http://run.plnkr.co' is therefore not
allowed access. The response had HTTP status code 405.
有什么想法吗?这是 Restify 4.0.3 的情况。谢谢!
使用 CORS 的内置模块:
server.use(restify.CORS({
origins: ['*'],
credentials: false, // defaults to false
headers: [''] // sets expose-headers
}));
如果您实际添加 Access-Control-Allow-Origin header ,您的解决方案应该也能正常工作;-)
我是一名优秀的程序员,十分优秀!