ИТАК У меня есть Angular2
приложения, работающее на http://localhost:4200/
, внутри этого приложения я пытаюсь вызвать функцию, расположенную в отдельном node.js
применения в настоящее время работает на http://localhost:3000/
Angular2 node.js вызова приложений функционирует
Моего звонка от Angular2
применение:
deletePhoto(photoId: string) {
var options = new RequestOptions({
headers: new Headers({
'Accept': 'application/json',
'Access-Control-Allow-Origin': 'http://localhost:4200'
})
});
let url = `http://localhost:3000/delete?photoId=${photoId}`;
this.http.post(url, options).subscribe(response => {
let user = response.json()
console.log(user);
},
err => {
console.log('Unable to call delete photo', err);
});
}
И это моя node.js
функция:
var express = require('express')
var app = express();
app.post('/delete', function (req, res) {
req.setHeader('Access-Control-Allow-Origin', 'http://localhost:4200');
res.setHeader('Access-Control-Request-Method', '*');
res.setHeader('Access-Control-Allow-Methods', 'POST');
res.setHeader('Access-Control-Allow-Headers', '*');
var photoId = req.query['photoId'];
//var userId = req.query['userId'];
res.json({ "photoId": photoId, "test": "Testing node server" })
})
Однако ошибка я получаю в браузере:
Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin ' http://localhost:4200 ' is therefore not allowed access.
Теперь после того, как прибегая к помощи этой ошибки, я прочитал мне нужно, чтобы установить заголовок на запрошенный ресурс, поэтому я не добавил req.setHeader
на моем node
метод, но все-таки с не avail, я также установил его в своем приложении Angular2
, чтобы узнать, что это значит, но, к сожалению, такой же результат.
Я прочитал cors
, но, к сожалению, я все еще смущен этим.
Это первый раз, когда я пытался сконфигурировать Angular2
и Node.js
, поэтому, пожалуйста, со мной, любые предложения/помощь, конечно, будут высоко оценены.
Если вы используете angular-cli, здесь есть настройка прокси-сервера, которую они описывают здесь: https://www.npmjs.com/package/angular-cli#proxy-to-backend – Dylan
Если настройка прокси-сервера does'nt помогите вам в обходном пути, вы можете временно отключить эту функцию браузера с помощью этого хром-плагина. https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi?hl=ru-RU – Rajiv
Итак, я добавил прокси, настроил начальную настройку в файле package.json, но проблема все еще остается. Если я отключил функции браузера, тогда, когда я в конечном итоге перейду к производству с этим, и я снова включу функции, тогда проблема вернется, не так ли? –