Ionic framework 开发期间允许CORS签入meanjs.org应用程序?
我正在使用meanjs.org堆栈开发一个简单的应用程序。现在我正在使用ionic框架开发移动客户端 我目前遇到的问题是,在测试ionic应用程序时,CORS检查会导致错误,如下所述: 虽然我可以按照该链接中的描述设置代理,但如果我将响应头添加到服务器端,它也会起作用,如:Ionic framework 开发期间允许CORS签入meanjs.org应用程序?,ionic-framework,cors,mean-stack,meanjs,Ionic Framework,Cors,Mean Stack,Meanjs,我正在使用meanjs.org堆栈开发一个简单的应用程序。现在我正在使用ionic框架开发移动客户端 我目前遇到的问题是,在测试ionic应用程序时,CORS检查会导致错误,如下所述: 虽然我可以按照该链接中的描述设置代理,但如果我将响应头添加到服务器端,它也会起作用,如:res.header(“访问控制允许源”,“*”) 将此添加到每个端点感觉不太好,我想找到一个解决方案,在开发过程中使用,我可以禁用CORS检查 我还尝试在config/env/default.js上更改lusca配置设置xs
res.header(“访问控制允许源”,“*”)代码>
将此添加到每个端点感觉不太好,我想找到一个解决方案,在开发过程中使用,我可以禁用CORS检查
我还尝试在config/env/default.js上更改lusca配置设置xssProtection:false
bit不起作用
在开发过程中,我如何启用以下响应头res.header(“访问控制允许来源”、“*”)
在所有端点中,在开发过程中使用meanjs.org+ionic是否可能或唯一可行的解决方案是设置代理
感谢您的开发,您可以设置代理以避免CORS问题
将ionic.project文件设置为类似以下内容:
{
"name": "proxy-example",
"app_id": "",
"proxies": [{
"path": "/api",
"proxyUrl": "http://example.com/api"
}]
}
然后从控制器调用api,如下所示
.controller('MyController', function($http) {
$http.post('/api/getMoreDeatils',data)
.then(function (response) {
//do something
})
})
希望这对您有所帮助尝试在服务器主文件中使用如下中间件:
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
next();
});
过了一段时间,我终于在meanjs.org论坛上得到了一个提示,并构建了一个解决方案
在config/lib/express.js文件上创建以下方法:
/**
* Disable CORS check to be used during development with access from mobile clients (currently tested with ionic)
*/
module.exports.disableCORSForDev = function(app) {
app.all('/*', function(req, res, next) {
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Credentials', true);
res.header('Access-Control-Allow-Methods', 'POST');
res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept');
next();
}).options('*', function(req, res) {
res.end();
});
var corsOptionsDelegate = function(req, callback) {
var corsOptions = { credentials: true };
callback(null, corsOptions); // callback expects two parameters: error and options
};
app.use(cors(corsOptionsDelegate));
};
在声明var app=express()之后,在同一个类上的方法init中添加了以下内容:
注意:这是一个服务器端解决方案在开发过程中绕过cors,不应在生产中使用,许多人可能更喜欢在ionic客户端上设置代理,如本文所述
如果您正在添加代理,则无需将res.header设置为服务器端。它将与proxy OnlyTanks一起工作,以提供帮助,但正如我在问题中提到的,我正在寻找一种解决方案,其中服务器端API实现上的标志将启用或禁用此功能。我们已经知道的问题中描述的代理方法。当做
var app = express();
this.disableCORSForDev(app);