2
Ember 시작 안내서를 따라 TodoMVC 앱을 빌드하지만 Rails를 백엔드로 사용하려고합니다. 불행히도 저는 크로스 사이트 도메인에 문제가 있습니다. 게시물 요청을 시도 할 때이 오류 메시지가 표시됩니다.레일 백엔드가있는 Ember TodoMVC 앱 없음 'Access-Control-Allow-Origin'헤더가 있습니다.
XMLHttpRequest cannot load http://localhost:3000/api/todos. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:4200' is therefore not allowed access.
레일 측면에 랙 Cors가 설치되어 있습니다. 나는 내 Gemfile에 추가 한 :
module Todoemberrails
class Application < Rails::Application
config.assets.enabled = false
config.middleware.use Rack::Cors do
allow do
origins '*'
resource '*', headers: :any, methods: [:get, :post, :put, :delete, :options]
end
end
end
end
을 그리고 이것은 내 컨트롤러 :
gem 'rack-cors', :require => 'rack/cors'
그리고 내 application.rb
파일
class Api::TodosController < ApplicationController
def index
render json: Todo.all
end
def show
render json: Todo.find(params[:id])
end
def create
todo = Todo.new(todo_params)
if todo.save
render json: todo, status: :created
else
render json: todo.errors, status: :unprocessed
end
end
private
def todo_params
params.require(:todo).permit(:title, :is_completed)
end
end
그리고 내 엠버 응용 프로그램의 내부 app/adapters/application.js
내가 가지고있는 것 :
import DS from 'ember-data';
export default DS.RESTAdapter.extend({
host: 'http://localhost:3000/api'
});
localhost : 4200이 요청을 보내는 이유는 무엇입니까? 거기에서 앱을 실행하고 있습니까? 그렇다면 호스트를 호스트로 변경합니다 : 'localhost : 4200/api'help? – Jacquerie
Ember-CLI를 사용하여 자체 웹 서버를 사용하여 ember 응용 프로그램을 호스팅하므로 레일스 서버를 동일한 포트에서 실행할 수 없기 때문에 localhost : 4200으로 변경할 수 없습니다. –
해결책을 제공 할 수는 없지만 막히면 'DS.ActiveModelAdapter'를 살펴 보는 것이 좋습니다. 보석'active_model_serializers'와 결합하면 완벽하게 작동합니다. – AWM