У меня проблемы с настройкой CORS с моим Rails API в CloudAnywhere.
Я пытаюсь настроить интерфейс React и сервер Rails в двух отдельных контейнерах CloudAnywhere.(Давайте назовем их rails.codeanyapp.com
и react.codeanyapp.com
.)
Для внешнего интерфейса React настроен прокси-сервер для Rails (т. Е. "proxy": "https://rails.codeanyapp.com"
in package.json
).
Серверная часть Rails имеет следующий код в config/initializers/cors.rb
Rails.application.config.middleware.insert_before 0, Rack::Cors do
allow do
origins 'https://react.codeanyapp.com/'
resource '*',
headers: :any,
methods: [:get, :post, :put, :patch, :delete, :options, :head]
end
end
GET-запросы работают нормально.Однако, когда я делаю POST, я получаю следующую ошибку в Rails
Started POST "/authors.json" for 104.42.117.130 at 2019-03-19 13:05:52 -0400
Cannot render console from 104.42.117.130! Allowed networks: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255
Processing by AuthorsController#create as JSON
Parameters: {"fname"=>"James", "lname"=>"madison", "email"=>"james@madison.com", "author"=>{"fname"=>"James", "lname"=>"madison", "email"=>"james@madison.com"}}
HTTP Origin header (https://rails.codeanyapp.com) didn't match request.base_url (https://react.codeanyapp.com)
Completed 422 Unprocessable Entity in 1ms (ActiveRecord: 0.0ms)
Обратите внимание, что CodeAnywhere настроен так, что общедоступный URL-адрес равен https://rails.codeanyapp.com
, даже если сервер фактически работает на порте 3000. Яподозреваю, что проблема на стороне Rails, когда входящий порт "переадресован" до 3000;но я не думаю, что у меня есть привилегии для изменения этого поведения.
Обратите также внимание, что как Origin, так и base являются https.(Большинство других сообщений об этой проблеме, когда один http, а другой https.)