我正在使用 Angular-4 创建前端应用程序,使用 spring boot(RestAPI)、JPA、MySQL 数据库创建后端应用程序。 我成功地能够从后端检索/获取存储的数据到前端,但是在将数据从前端发布到后端时出现错误,如下所示: “预检响应具有无效的 HTTP 状态代码 403”。
<小时/>前端 Angular 代码的代码片段:
myFoo(productData : Product) : Observable<any>{
let headers = new Headers();
headers.append( 'Content-Type', 'application/json' );
let myOptions = new RequestOptions({ headers: headers });
return this._http
.post("http://localhost:8081/..(URI)../productslist",productData,myOptions)
.map( (resp : Response) => resp.json() )
}
其中从 Controller 类传递到上述方法参数的productData是对象类型:
productData : any = {
price: 3500,
productavaliabledate: "March 13, 2018",
productcode: "GND-124",
productid: 6,
productimage: "https://i.imgur.com/sJUpSpt.jpg",
productname: "dummy1",
productrating: 3
}
<小时/>
后端 Spring RestAPI 代码的代码片段是:
@RestController
public class OnlineShoppingController {
@Autowired
private ProductService productService;
@RequestMapping(path="/productslist",method =RequestMethod.POST)
public Product createProduct(@Valid @RequestBody Product product) {
return productService.createProduct(product);
}
}
其中 Product 是 dto/Entity 对象,即:
@Entity
@Table(name="product_table")
public class Product {
@Id
@Column(name="productid", columnDefinition="INT(100)")
private int productid;
@Column(name="productname")
private String productname;
@Column(name="productcode")
private String productcode;
@Column(name="productavaliabledate")
private String productavaliabledate;
@Column(name="price" , columnDefinition="INT(100)")
private int price;
@Column(name="productrating", columnDefinition="INT(50)")
private int productrating;
@Column(name="productimage")
private String productimage;
//getter,setter,constructor using field are also provided
}
最佳答案
这是Spring Boot配置问题 不是Angular应用程序。403 Forbidden状态意味着: 响应客户端对网页的请求,或者可能表明可以到达服务器并处理该请求,但服务器拒绝采取任何进一步的操作。
最后,我添加了一个 AppConfig 类,它扩展了 WebMvcConfigurerAdapter 并重写了 addCorsMappings() 方法,以便允许我访问所有 HTTP 方法请求。
AppConfig.java-
@Configuration
public class AppConfig extends WebMvcConfigurerAdapter {
@Bean
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurerAdapter() {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedMethods("HEAD", "GET", "PUT", "POST", "DELETE", "PATCH");
}
};
}
}
在我的 application.properties 文件中,我禁用了 springs basic security ie-
security.basic.enabled=false
感谢您对此问题的所有建议和意见。
关于java - 预检响应在 Angular 4 和 Spring Boot (RestAPI) 应用程序中具有无效的 HTTP 状态代码 403,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48621560/