gpt4 book ai didi

java - 预检响应在 Angular 4 和 Spring Boot (RestAPI) 应用程序中具有无效的 HTTP 状态代码 403

转载 作者:行者123 更新时间:2023-12-02 02:20:06 25 4
gpt4 key购买 nike

我正在使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com