gpt4 book ai didi

java - 接受 GET 时未接受 POST 请求

转载 作者:可可西里 更新时间:2023-11-01 16:35:54 24 4
gpt4 key购买 nike

我正在尝试从 spring Controller 中的 angularjs 进行 http 调用并发布 json 数据,但我在 angularjs 中收到此错误:

angular.js:10661 POST http://localhost:8080/shopng/product/add 404 (Not 
Found)
(anonymous) @ angular.js:10661
sendReq @ angular.js:10480
serverRequest @ angular.js:10187
processQueue @ angular.js:14634
(anonymous) @ angular.js:14650
$eval @ angular.js:15916
$digest @ angular.js:15727
$apply @ angular.js:16024
(anonymous) @ angular.js:23416
eventHandler @ angular.js:3293
product_service.js:35 Error while adding product
product_controller.js:30 {productName: "ads", productPrice: 34, description: "ads", imageUrl: "asd"}

但是当我使用 GET 请求时,它没有给我任何错误,但它说媒体类型不受支持,当我删除媒体类型并执行时,数据库中添加了“NULL”值。

这是我的 RestController:

@RestController
@RequestMapping("/product")
public class ProductRestController {
@Autowired
ProductDao productDao;
//Add Product

@RequestMapping(value = "/add", method= RequestMethod.POST, consumes="application/json")
public ResponseEntity<Void> createProduct(@ModelAttribute("product") Product product) {
System.out.println("Creating Product " + product.getProductName());

if (productDao.isProductExit(product)) {
System.out.println("A Product with name " + product.getProductName() + " already exist");
return new ResponseEntity<Void>(HttpStatus.CONFLICT);
}

productDao.add(product);

return new ResponseEntity<Void>(HttpStatus.CREATED);
}

这是我的 Angular 的服务请求:

function addProduct(product){
var deferred = $q.defer();
$http.post('http://localhost:8080/shopng/product/add', product)
.then(
function(response){
deferred.resolve(response.data);
},
function(errResponse){
console.log('Error while adding product');
deferred.reject(errResponse);
}

);
return deferred.promise;
}

这是我的项目的 github 存储库:https://github.com/Bk073/Shopping任何帮助将不胜感激。

最佳答案

我已经完成了您的安全配置类。

请如下所示禁用 csrf。

http.authorizeRequests().antMatchers("/admin/**")
.access("hasRole('ROLE_ADMIN')").and().formLogin()
.loginPage("/login").failureUrl("/login?error")
.usernameParameter("username")
.passwordParameter("password")
.and().logout().logoutSuccessUrl("/login?logout")
.and().csrf().disable();
//.and().exceptionHandling().accessDeniedPage("/403");

您收到 404 - 因为 csrf 检查抛出异常。要处理该异常,您还没有添加异常处理程序。所以 404 意味着 - 没有找到异常处理程序,而不是 post 请求本身。

如果您需要使用 csrf 进行保护,请记住在请求中发送 csrf token 。

回复成功请见下方附件。

enter image description here

更新代码 https://github.com/supun/Shopping

关于java - 接受 GET 时未接受 POST 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50672453/

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