zoukankan      html  css  js  c++  java
  • 400 bad Request -- 参数不当引发的错误

    最近在为自己所在的演讲俱乐部开发一个小程序,后端是用.NET CORE 来实现,今天遇到了一个奇怪的问题,一直报400 bad request请求错误。

    前端代码:

    let url = behavior=='like'?'like':'like/cancel';
    this.request({
      url:url,
      method:'POST',
      data:{
        id:likeid
      }
    })
    

    后端代码:

       [HttpPost]
       public async Task<IActionResult> doLike([FromBody]int like_id)
        {
            return await Task.Run(() =>
            {
                
                jService.UpdateLikeStatus(model.Id, true);
                return Ok();
            });
        }
    

    然后奇怪的是一直报错,400-Bad Request,最后不断调试,还把参数请求属性改成了[FromHeader], 结果发现前端的代码能跳到这个方法里面,只是like_id一直未0 。

    最后无奈,推测是不是POST参数是不是需要对一个复合类型(非简单类型,比如int ,string等)。最后把参数请求改成了强类型,竟然可以了!

    [HttpPost]
    public async Task<IActionResult> doLike([FromBody] Journal_Member_Likes model)
    {
        return await Task.Run(() =>
        {
            
            jService.UpdateLikeStatus(model.Id, true);
            return Ok();
        });
    }
    

    @||400x0

    可以看到传递进来的Id跟前端是一样的了。

    事后在博客园翻了一下文章,发现有个人遇到的情况跟我是一样的。不过他是通过修改基本数据类型为object类型来达到传参的目的:

    public string PostTest([FromBody]object value)
    {
        return "Got it!";
    }
    

    以及还有评论说:

    //单个参数的情况下:
    jquery这样提交:$.ajax({
    url:"http://127.0.0.1:18170/api/coderecord",
    type:"post",
    data:{"":"13777777777"},
    success:function(data){
    }
    });
    
  • 相关阅读:
    [SUCTF 2019]EasySQL
    [强网杯 2019]随便注
    [HCTF 2018]WarmUp
    Linux下配置JDK环境
    Centos克隆虚拟机后配置网络
    Sublime安装插件
    LeetCode-91-解码方法
    LeetCode-322-零钱兑换
    LeetCode-152-乘积最大子数组
    LeetCode-139-单词拆分
  • 原文地址:https://www.cnblogs.com/wanglee/p/12731418.html
Copyright © 2011-2022 走看看