Изменение: Возможно, стоит отметить, что я зарегистрирован на домене GoDaddy, который пересылает с маскировкой на мой Bitnami IP. Мой стек находится на одном сервере, поэтому я не понимаю суть этого вопроса. Или, может быть, я понимаю это неправильно. Пожалуйста, помогите мне понять эту ошибку.
Я знаю, что есть другие темы, похожие на это, но я не видел никакой соответствующей моей настройки.
У меня есть Amazon AWS EC2 Bitnami MEAN, работающий на сайте AngularJS. Я размещаю некоторую информацию, которую я собрал извне, с некоторыми скриптами Python в mongodb, а затем у меня есть JS API, который успешно отправляет коллекцию через порт 3000... все довольно стандартно из того, что я могу сказать. Я просто изучаю эту технологию и довольно новичок.
Поэтому, когда я перехожу к API [URL]: 3000/api в Chrome, я вижу результаты JSON. Это не проблема.
Когда мой Угловой контроллер сайта попытается выполнить $ http GET в URL-адресе API, Express выведет на экран и отобразит на моей панели шпатлевки Bitnami, что я действительно попадаю в API.
НО.. Chrome дает мне эту сладкую ошибку на странице, когда я отлаживаю F12:
XMLHttpRequest cannot load **URL**. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin **URL**' is therefore not allowed access.
Извините за все поддельные URL-адреса, я новичок в stackoverflow, и он отметил, что я использую "более двух URL-адресов", потому что у меня нет 10 баллов.
Большое вам спасибо за то, что помогли мне понять эту проблему.
Причина этой ошибки проста: вы вызываете вызов API как отдельный домен из того, с которого выполняется ваше угловое приложение. Chrome или любой другой браузер обычно генерируют ошибку CORS.
Что вам нужно сделать, так это перейти в ваш API и включить белый список домена, из которого выполняется ваше угловое приложение. Я не уверен, как это делается в python, но в NodeJS ниже - это то, что я буду делать.
var cors = require('cors');
corsOptions = {
origin: [
'http://www.127.0.0.1:5555',
'http://www.any-other-site-to-access.com'
],
credentials: true
};
app.use(cors(corsOptions));
Для python это может помочь, не уверен http://enable-cors.org/server_appengine.html
Из документации CORS, чтобы все CORS
var express = require('express')
, cors = require('cors')
, app = express();
app.use(cors());
app.get('/products/:id', function(req, res, next){
res.json({msg: 'This is CORS-enabled for all origins!'});
});
app.listen(80, function(){
console.log('CORS-enabled web server listening on port 80');
});
self.send_header("Access-Control-Allow-Origin", "*")
Я думаю, что он должен обрабатывать все входящие запросы, даже если это перенаправление