我正在尝试调用 Rails 后端上的控制器。在同一域的我的开发服务器上,一切正常。
Access-Control-Allow-Origin *
存在于 Apache 服务器上。
const res = await fetch(`${PUBLIC_ADMIN_URL}/api_users.json`, {
method: 'POST',
headers: {
'Accept': 'application/json',
'content-type': 'application/json'
},
body: JSON.stringify({"user": user, "password": password})
})
将在同一域中的我的开发服务器上工作。但我必须删除
content-type': 'application/json'
才能将其 POST 到 Rails 后端,而不会在浏览器中出现 CORS 错误。但现在,有效负载在某处丢失,参数不会传递到 Rails 应用程序。
我认为这不是 Rails 的问题,而是 Apache 配置的问题。
我必须删除
'content-type': 'application/json'
才能使请求到达 Rails 应用程序,但 JSON 将不会被发布。
现在我构建一个
FormData
对象并发布该对象。问题解决了:)
const loginData = new FormData();
loginData.append("user", user)
loginData.append("password", password)
const res = await window.fetch(`${PUBLIC_ADMIN_URL}/api_users.json`, {
method: 'POST',
headers: {
'Accept': 'application/json',
// 'content-type': 'application/json'
},
body: loginData
})