Тестирование Rails API с AngularJS и Codepen

#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.)(