Разрешающая проверка CORS в приложении meanjs.org во время разработки?
Я использую стек Meanjs.org для разработки простого приложения. Сейчас я работаю на мобильном клиенте с ионной рамкой.
В настоящее время у меня возникает проблема с проверкой CORS, которая вызывает ошибку при тестировании ионного приложения, как описано здесь: http://blog.ionic.io/handling-cors-issues-in-ionic/ Хотя я мог бы настроить прокси, как описано в этой ссылке это также работает, если я добавляю заголовок ответа на стороне сервера, например: res.header("Access-Control-Allow-Origin", "*");
Добавление этого к каждой конечной точке не очень хорошо, и я хотел бы найти решение, которое можно использовать во время разработки, где я мог бы отключить проверку CORS.
Я также попытался изменить конфигурацию lusca в настройке config/env/default.js xssProtection: false
немного не работает?
Как я могу во время разработки включить следующий заголовок ответа res.header("Access-Control-Allow-Origin", "*");
во всех конечных точках возможно ли это или единственное жизнеспособное решение, использующее meanjs.org + ionic во время разработки, - это настройка прокси-сервера?
Спасибо
3 ответа
Через некоторое время я наконец-то получил подсказку на форумах 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));
};
добавил следующее к методу init в этом же классе сразу после объявления var app = express();
var app = express();
this.disableCORSForDev(app);
Примечание. Это решение на стороне сервера, позволяющее обойти cors во время разработки, и его не следует использовать в рабочей среде. Многие могут предпочесть вместо этого настроить прокси на ионном клиенте, как описано в этой ионной статье.
Для разработки вы можете установить прокси, чтобы избежать проблем с 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();
});