- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
下午好!我收到错误“从原点“http://localhost:8080/registration”获取“http://localhost:3000”的访问已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:无“访问控制”请求的资源上存在“-Allow-Origin” header 。如果不透明响应满足您的需求,请将请求的模式设置为“no-cors”以在禁用 CORS 的情况下获取资源。”我正在尝试将来自 Angular Web 应用程序的信息放入 java 应用程序(spring boot)中。我查看了许多不同的链接,但没有找到代码中的错误在哪里。这是我的 Registration.js,我想有一个错误,但找不到哪里。
import fetch from "node-fetch";
class Registration extends Component{
constructor(props) {
super(props);
this.handleChange = this.handleChange.bind(this);
this.handleSubmit = this.handleSubmit.bind(this);
this.state = {
username: '',
password: '',
confirmPassword: '',
user_fullname: '',
user_email: '',
company_name: '',
position_name: '',
};
}
handleChange = (event, title) => this.setState({[title]: event.target.value});
handleSubmit = async event => {
event.preventDefault();
this.setState({isloading: true});
console.log(this.state);
const headers: HttpHeaders = new HttpHeaders().set('Content-Type', 'application/json;charset=UTF-8')
.append('Content-type', 'application/json;')
.append('Accept','application/json')
.append('Access-Control-Allow-Origin', '*')
return fetch('http://localhost:8080/registration',
{ mode:"no-cors" , headers: headers, method:"POST" ,body:this.state}
).then(response => {
console.log(response);
})
.catch(error => {
console.log(error)
})
};
render() {
return (
<form method="POST" onSubmit={this.handleSubmit} action="/registration">
<FormGroup controlId="username" bssize="large">
<FormControl name="username" value={this.state.username} type="text" onChange={ this.handleUsernameChange} />
</FormGroup>
<FormGroup controlId="password" bssize="large">
<FormControl name="password" value={this.state.password} onChange={this.handlePasswordChange} type="text" />
</FormGroup>
<FormGroup controlId="confirmPassword" bssize="large">
<FormControl name="confirmPassword" value={this.state.confirmPassword} onChange={this.handleConfirmPasswordChange} type="text"/>
</FormGroup>
<FormGroup controlId="user_fullname" bssize="large">
<FormControl name="user_fullname" value={this.state.user_fullname} type="text" onChange={this.handleUser_FullnameChange} />
</FormGroup>
<FormGroup controlId="user_email" bssize="large">
<FormControl name="user_email" value={this.state.user_email} type="text" onChange={this.handleUser_emailChange} />
</FormGroup>
<FormGroup controlId="company_name" bssize="large">
<FormControl name="company_name" value={this.state.company_name} type="text" onChange={this.handleCompany_nameChange} />
</FormGroup>
<FormGroup controlId="position_name" bssize="large">
<FormControl name="position_name" value={this.state.position_name} type="text" onChange={this.handlePosition_nameChange} />
</FormGroup>
<Button bssize="large" type="submit"> Registration </Button>
</form>
);
}}export default Registration;
我的UserController.java
@RequestMapping(value = "/registration", method = {RequestMethod.POST}, produces={"application/json"})
@ResponseBody
public ResponseEntity<User> registration(@RequestBody User user, HttpStatus httpStatus) {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.valueOf(MediaType.APPLICATION_JSON_UTF8_VALUE));
userService.saveUser(user);
return new ResponseEntity<User>(user, HttpStatus.CREATED);
}
@GetMapping("/registration")
public String registration(Model model) {
model.addAttribute("userForm", new User());
return "registration";
}
用户.java
@Entity
@Table(name = "users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
private int id;
@Column(name = "username")
private String username;
@Column(name = "password")
private String password;
@Transient
@Column(name = "confirmPassword")
private String confirmPassword;
@Column(name = "user_fullname")
private String user_fullname;
@Column(name = "user_email")
private String user_email;
@Column(name = "company_name")
private String company_name;
@Column(name = "position_name")
private String position_name;
@Column(name = "date")
private Date date = new Date(System.currentTimeMillis());
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name = "user_roles", joinColumns = @JoinColumn(name = "user_id"), inverseJoinColumns = @JoinColumn(name = "role_id"))
private Set<Roles> roles;
public User(){
}
public User(Integer id,String username, String password, String confirmPassword, String user_fullname, String user_email,String company_name, String position_name ){
this.id = id;
this.username=username;
this.password = password;
this.confirmPassword = confirmPassword;
this.user_fullname = user_fullname;
this.user_email = user_email;
this.company_name = company_name;
this.position_name = position_name;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getConfirmPassword() {
return confirmPassword;
}
public void setConfirmPassword(String confirmPassword) {
this.confirmPassword = confirmPassword;
}
public String getUser_fullname() {
return user_fullname;
}
public void setUser_fullname(String user_fullname) {
this.user_fullname = user_fullname;
}
public String getUser_email() {
return user_email;
}
public void setUser_email(String user_email) {
this.user_email = user_email;
}
public String getCompany_name() {
return company_name;
}
public void setCompany_name(String company_name) {
this.company_name = company_name;
}
public String getPos_name() {
return position_name;
}
public void setPos_name(String position_name) {
this.position_name = position_name;
}
public Set<Roles> getRoles() {
return roles;
}
public void setRoles(Set<Roles> roles) {
this.roles = roles;
}
public Date getDate() {
return date;
}
}
用户数据库
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(255) NOT NULL ,
password VARCHAR(255) NOT NULL ,
user_fullname VARCHAR(255),
user_email VARCHAR(255) ,
company_name VARCHAR(255),
position_name VARCHAR(255),
date DATETIME
)
ENGINE = InnoDB;
最佳答案
您似乎遇到了 Spring Boot 安全问题。假设您启用了 Spring Boot 安全性,根据您收到的错误消息“对预检请求的响应未通过访问控制检查”,您需要在后端允许预检请求。您可以尝试创建一个新类并扩展 WebSecurityConfigurerAdaptor,如下所示:
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers(Http.OPTIONS, "/**").permitAll()
.anyRequest().authenticated()
.and()
.httpBasic();
}
}
Http.OPTIONS 是发送到服务器的飞行前请求,以确保您拥有正确的身份验证来检索资源。在这里,您允许所有预检请求让实际请求检索资源。
关于java - 如何更正我的代码以消除 CORS 获取问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57947010/
这个问题已经有答案了: How to check whether a string contains a substring in JavaScript? (3 个回答) 已关闭 4 年前。 需要在运
我已经为系统调用 sys_uname 编写了内联汇编代码,但它似乎不正确。 #include #include #include #include #include struct utsna
我想知道是否有一种方法可以轻松安全地纠正 float 。 例如, 输入时:"32 + 32.1 "结果:“64.0999999999999” 我还必须提到,在使用科学记数法时,这种情况经常发生。“(2
我想知道如果我定义一个基本 Activity 对象并将我的所有 Activity 作为其子类会发生什么。然后我在基类中声明一个静态变量,所有的子类都使用相同的静态变量还是每个子类都有一个。 例如。我的
我想知道自定义整数类型(如 time_t、socklen_t 等)的正确 printf 格式说明符是什么。 例如, #include #include #include #include #i
我有 175 个 mp4 视频文件和扩展名为 .ass 的字幕文件。不幸的是,我的智能电视无法阅读这些字幕。我计划将字幕刻录(硬编码)到视频中。 我使用这个命令: ffmpeg -i orgvideo
我希望当我在分号后按 enter 键时,光标能够正确缩进。我如何在 VS Code 中实现这一点? 最佳答案 您可以关闭 wrappingIndent,或将其设置回默认的 same,然后确保 form
我的工作地点是研究购买第三方工具,用于使用地理编码的基于批处理的美国和加拿大地址更正。 您使用了什么产品? 您喜欢他们什么? 您不喜欢他们什么? 请注意,我们是C/C++ Unix商店。 最佳答案 我
StyleCop 规则 SA1642 坚持要求我的构造函数文档头必须以“初始化...的新实例”开头。 虽然我同意规则本身,但我就是无法让自己接受 StyleCop 强制执行我认为丑陋的拼写。它是用“s
我有一个包含观察结果和观察日期的数据框。日期是从 csv 文件读取的,但仅包括月份和日期。 R 假设它们都是 2016 年的。我知道日期是按从最近到最近的顺序排列的,那么我该如何添加正确的年份呢? 输
我有一个像这样的 Controller 操作: List abcd = new List() foreach (var i in images) { abcd.Add("{url:'"+Get
我正在使用以下 Nginx配置以防止在我使用 x-robots tag 时索引某些文件夹中的内容 location ~ .*/(?:archive|filter|topic)/.* { add
我需要在表格中更正时区不匹配问题。 unix 时间戳 1253568477 之前的所有日期和时间都需要在其值中加上 5 小时才能使它们等于 GMT。 我有以下列... date(数据类型date),关
我有以下内容: class Program { static void Main(string[] args) { Process pr; pr = new P
我是 xampp 的初学者。每次启动 XAMPP 控制面板时,我都会在日志框中看到错误列表。这是一个例子: 14:58:16 [main] Initializing Control Panel
我在 onTouchEvent(MotionEvent event) 中响应自定义 View 内的触摸事件。我遇到坐标不一致的问题:event.getRaw(Y) 返回触摸的 Y 坐标,包括状态栏,但
这是我在 UITableViewHeaderFooterView View 中设置内容的方法。 - (id)initWithFrame:(CGRect)frame { self = [super in
我有一个像这样的子查询 Select id, sum(select fran_payment.amount from fran_payment
我需要实现 ContraintValidatorFactory 接口(interface),它是 jsr303 的一部分 public interface ConstraintValidatorFac
我的脚本似乎无法正常工作,我想要得到的内容是不言自明的。我尝试了几种不同的方法来完成这项工作,四处搜索并尝试解决它。 我还尝试通过 console.log() 检查 chrome 日志,但它没有运
我是一名优秀的程序员,十分优秀!