【发布时间】:2018-07-03 23:43:59
【问题描述】:
我有一个简单的 React 表单。我正在尝试使用 Fetch API 将此表单中的数据发送到我的 Java 后端。这是我的 React 表单文件:
import React, {Component} from 'react';
class Form extends Component {
constructor(props){
super(props);
this.state={value:""};
this.handleChange = this.handleChange.bind(this);
this.handleSubmit = this.handleSubmit.bind(this);
}
handleChange(event){
event.preventDefault();
this.setState({value:event.target.value});
}
handleSubmit(event){
event.preventDefault();
const data = new FormData(event.target);
fetch('http://localhost:8080/add/person', {
method: 'POST',
body: data
});
}
render(){
return(
<form onSubmit={this.handleSubmit}>
<label>Name:
<input type="text" value={this.state.value} onChange={this.handleChange} />
</label>
<input type="submit" value="Submit"/>
</form>
);
}
}
由于某种原因,当我处于调试模式时,数据变量总是有一个空的 JSON。在我的 Java 后端,当我收到请求时,我看到的是空白表单数据。
关于为什么我无法将数据发送到我的 Java 后端的任何想法?
编辑:我还想指出,我的前端托管在 localhost:3000 上,而我的 Java 后端服务器位于 localhost:8080
【问题讨论】:
-
当您打开控制台时,您是否会因为不同的主机而遇到 CORS 问题?
-
是的!我在控制台中收到以下错误:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,Origin 'localhost:3000' 不允许访问。响应的 HTTP 状态代码为 500。如果不透明的响应满足您的需求,请将请求的模式设置为“no-cors”以获取禁用 CORS 的资源
-
这个应用是用
Create React App创建的吗? -
是的。这是导致这个问题的原因吗?
-
在下面更新了我的答案。