#ruby-on-rails #angularjs #codepen
#ruby-on-rails #angularjs #codepen
Вопрос:
Возникли некоторые проблемы с подключением моего pen к моему серверу разработки на localhost.
У меня есть скрипт angularjs, который использует запрос $ http.get для получения некоторого json с сервера, но это приводит к этой ошибке.
Access to XMLHttpRequest at 'localhost:3000/test' from origin 'https://s.codepen.io' has been blocked by CORS policy: Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https.
Сервер Rails и браузер находятся на одном компьютере, и я могу успешно вызвать страницу, если просто введу URL сервера напрямую в браузер, но я не уверен, как устранить эту ошибку для скриптов, запущенных в codepen.
В случае интереса запрос в моем javascript просто:
$http.get("localhost:3000/test").then(
function(response) {
console.log("success");
},
function(response) {
console.log("failed");
}
);
Комментарии:
1. Есть ли у вас
rack-cors
gem в вашем Gemfile?2. Нет, я этого не делаю! Я попробую это.
Ответ №1:
Попробуйте раскомментировать rack-cors
gem в вашем Gemfile. Затем в config/application.rb
вы можете настроить cors примерно так:
config.middleware.insert_before 0, Rack::Cors do
allow do
origins '*'
resource '*', headers: :any, methods: [:get, :post, :options]
end
end
Имейте в виду, это позволит получить доступ из любого источника. Вероятно, вы захотите изменить это для своей производственной среды.
Комментарии:
1. К сожалению, никакой радости. Однако я не уверен, что сообщение действительно попадает на мой rails-сервер. Похоже, что это каким-то образом блокируется в браузере, прежде чем оно попадет на мой сервер. (Обратите внимание, что сообщение, упомянутое выше, появляется в моей консоли Chrome, а не на консоли сервера Rails.)(