【发布时间】:2018-02-15 10:13:51
【问题描述】:
我有一个在 localhost:3000 上运行的 React 登录组件。它返回一个表单,在提交时使用 JS fetch() 将其信息发布到运行在 localhost:3001 上的 rails api 中的 SessionsController。我在使用 FormData 对象和自定义 json 之间交替使用;无论哪种方式,我都会遇到同样的问题。我已经通过使用“rack-cors”消除了控制台中的 CORS 错误,但在访问 SessionController 的 create 操作中发布的信息时仍然遇到问题。当我将 binding.pry 放入其中时,这就是我在 params 中的全部内容:
[1] pry(#<SessionsController>)> params
=> <ActionController::Parameters {"controller"=>"sessions",
"action"=>"create"} permitted: false>
------- 如何获取我的用户名和密码? ----------
登录组件:
import React from 'react'
const Login = () => {
return(
<div>
<h1>Login</h1>
<form id="login-form" onSubmit={(event) => postSession(event)}>
<label htmlFor="username">Username </label><br/>
<input type="text" id="username"/><br/>
<label htmlFor="password">Password </label><br/>
<input type="password" id="password"/><br/>
<input type="submit" value="Login"/>
</form>
</div>
)
}
const postSession = (event) => {
event.preventDefault()
fetch('http://localhost:3001/sessions',
{
header: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
method: 'post',
body: new FormData(document.getElementById("login-form"))
}
)
.then((response) => {console.log("Post Session Response: ", response)})
.catch((error) => {console.log("Error in the Post Session fetch: ", error)})
}
export default Login
config/application.js:
module Geohunter2
class Application < Rails::Application
config.middleware.insert_before 0, "Rack::Cors" do
allow do
origins '*'
resource '*', :headers => :any, :methods => [:get, :post, :patch, :options]
end
end
end
end
【问题讨论】:
标签: ruby-on-rails reactjs cors rack-cors