Заголовок источника HTTP (http://localhost:3000) не соответствует запросу.base_url (http://localhost:3001)

#ruby-on-rails #axios

Вопрос:

Я пытаюсь отправить запрос на публикацию с веб-интерфейса с помощью Axios для регистрации пользователя.

 handleSubmit(event) {
    const { email, password, password_confirmation } = this.state;

    let partnerCredentials = {
      partner: {
        email: email,
        password: password,
        password_confirmation: password_confirmation,
      },
    };

    axios({
      method: "post",
      url: "http://localhost:3001/v1/registrations",
      data: partnerCredentials,
      headers: { "Content-Type": "multipart/form-data" },
    })
      .then(function (response) {
        //handle success
        console.log(response);
      })
      .catch(function (response) {
        //handle error
        console.log(response);
      });
event.preventDefault();
  }
 

Теперь я получаю ошибку в интерфейсном API Rails, когда мой интерфейс пытается ввести учетные данные партнера:

 Processing by V1::RegistrationsController#create as HTML
  Parameters: {"{"partner":{"email":"test@gmail.com","password":"asdf","password_confirmation":"asdf"}}"=>"[FILTERED]"}
HTTP Origin header (http://localhost:3000) didn't match request.base_url (http://localhost:3001)
Completed 422 Unprocessable Entity in 2ms (ActiveRecord: 0.0ms | Allocations: 471)

ActionController::InvalidAuthenticityToken (ActionController::InvalidAuthenticityToken):
...
 

Вот мой контроллер:

 module V1 
    class RegistrationsController < ApplicationController
        protect_from_forgery with: :exception
        skip_before_action :verfiy_authenticity_token, raise: false

        def create 
           
            partner = Partner.create!(
                email: params['partner']['email'], 
                password: params['partner']['password'],
                password_confirmation: params['partner']['password_confirmation']
            )

            if partner
                session[:partner_id] = partner.index
                render json: {
                    status: created, 
                    partner: partner
                }
            else
                render json: { status: 500 }
            end
        end

        private
        def partner_params
            params.require(:partner).permit(:email, :password, :password_confirmation)
        end
    end
end
 

Любая помощь, которую я могу найти для решения этой проблемы, будет очень признательна. Спасибо

Комментарии:

1. /Почему вы отправляете сообщение на порт 3001?

2. Если это предполагается, то вы выполняете запрос Перекрестного происхождения. Это то, что вы должны использовать github.com/cyu/rack-cors .