我有一个服务器设置,一切都很顺利,但我收到错误
.... is not allowed by Access-Control-Allow-Origin
这很奇怪,因为承载我的Angular.js站点的grunt服务器在端口9000上,而我的其余服务在端口8678上。
无论如何我发现了这个
https://gist.github.com/Vp3n/5340891
解释了如何在grunt服务器上启用CORS,但我的grunt文件看起来不一样......这是我当前的grunt文件的一部分
connect: {
options: {
port: 9000,
// Change this to '0.0.0.0' to access the server from outside.
hostname: 'localhost'
},
livereload: {
options: {
middleware: function (connect) {
return [
lrSnippet,
mountFolder(connect, '.tmp'),
mountFolder(connect, yeomanConfig.app)
];
}
}
},
test: {
答案 0 :(得分:9)
我不确定你的意思是“我的grunt文件看起来不一样”,但你需要阅读grunt-contrib-connect文档的文档,该文档告诉你middleware
选项接受一个应该返回一组中间件的函数。
引用的要点是一个允许CORS的简单中间件。
在你的情况下,它看起来像:
connect: {
options: {
port: 9000,
// Change this to '0.0.0.0' to access the server from outside.
hostname: 'localhost'
},
livereload: {
options: {
middleware: function (connect) {
return [
lrSnippet,
mountFolder(connect, '.tmp'),
mountFolder(connect, yeomanConfig.app),
function(req, res, next) {
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Allow-Methods', '*');
next();
}
];
}
}
},
test: {
答案 1 :(得分:0)
我遇到了同样的问题,无法使Grunt行为正常。以下是Gruntfile.js的相应片段:
connect: {
options: {
port: 9000,
// Change this to '0.0.0.0' to access the server from outside.
hostname: '0.0.0.0',
livereload: 35729
},
livereload: {
options: {
open: true,
base: [
'.tmp',
'<%= yeoman.app %>'
]
}
},
使用中间件更新它以将Access-Control-Allow-...
标题设置为*
的正确方法是什么?