首页 > 编程语言 >ASPNET MVC POST DELETE PUT 请求返回 400 (Bad Request)

ASPNET MVC POST DELETE PUT 请求返回 400 (Bad Request)

时间:2024-03-22 17:33:07浏览次数:29  
标签:请求 Request window Bad MVC 400 options requestToken

近日遇到 POST DELETE PUT 请求返回 400 (Bad Request),而GET请求正常的情况

经几日排查,发现是【防止 ASP.NET MVC 应用程序中的跨站点请求伪造 (CSRF) 攻击】导致的

解决方法:在请求头中加入 RequestVerificationToken

        @inject Microsoft.AspNetCore.Antiforgery.IAntiforgery Antiforgery
        @{
            ViewData["Title"] = "JavaScript";

            var requestToken = Antiforgery.GetAndStoreTokens(Context).RequestToken;
            ViewData["requestToken"] = requestToken;
        }

        window.requestToken = '@ViewData["requestToken"]';

将从服务获取到的RequestVerificationToken保存在 window.requestToken 中

    /**
     * 处理请求
     * @param options 请求
     * @returns 请求
     */
    protected transformOptions(options: RequestInit): Promise<RequestInit> {
        
        options.headers = {
            ...options.headers,
            "X-Requested-With": "XMLHttpRequest",        // 为Ajax请求  设置为null 则为同步请求
            Requestverificationtoken: (window as any).requestToken, // 添加 反 CSRF token  ,该值在_Layout.cshtml中从服务器中获取
            //Authorization: this.config.getAuthorization(),
            //// myHeader: 'myValue',
            //// RequestVerificationToken: 'CfDJ8FCgiLCUL_FLjrQW8lKC-eRvgHLok720aMhC9hPfMIQDgHk23OAOkkvakfENTUfHv6jjdLpXIn5tqlHtp5mVMBZEqUjfz7iNsQqODcF4TOvktJPEyDK8gVOUsxuj0lyZ8SFVgNUPqGejONIJhimRIoc',
            //'accept-language': this.config.getAcceptLanguage() || ''
        }

        // 设置跨域请求发送cookie
        //options.credentials = 'include'
        //// 指示请求将使用CORS
        //options.mode = 'cors'
        options.cache = 'default'
        console.log('transformOptions', 'options:', options)
        return Promise.resolve(options)
    }

在处理请求的时候在请求头中添加 Requestverificationtoken

特写此帖以做记录。

 

标签:请求,Request,window,Bad,MVC,400,options,requestToken
From: https://www.cnblogs.com/shipengfei/p/18090144

相关文章

  • JDBC Connection Configuration+JDBC Request
    使用场景针对数据库做性能测试获取数据库表内数据关联使用性能测试背景高并发访问:数据库系统在高并发访问情况下可能遇到性能瓶颈,如响应时间延长、连接耗尽等。通过压测可以评估数据库在高并发负载下的性能表现。复杂查询:某些复杂查询可能会对数据库性能造成影响,例如涉及......
  • 宠物医院管理系统(JSP+java+springmvc+mysql+MyBatis)
    本项目包含程序+源码+数据库+LW+调试部署环境,文末可获取一份本项目的java源码和数据库参考。项目文件图项目介绍随着宠物行业的快速发展和宠物数量的不断增加,宠物医疗服务的需求日益旺盛。宠物医院管理系统作为一种专业的信息化工具,对于提升宠物医院的工作效率、优化顾客服......
  • 房屋中介房源管理系统的设计与实现(JSP+java+springmvc+mysql+MyBatis)
    本项目包含程序+源码+数据库+LW+调试部署环境,文末可获取一份本项目的java源码和数据库参考。项目文件图项目介绍随着房地产市场的蓬勃发展,房屋中介机构在房源管理和客户服务方面面临着日益增长的挑战。一个高效、可靠的房屋中介房源管理系统对于提升中介机构的工作效率、优......
  • 7*24h新闻自动发送至微信(requests+pywinauto)
    7*24h新闻自动发送至微信(requests+pywinauto)1.爬取新闻列表2.发送至微信指定联系人1.爬取新闻列表目标地址:https://kuaixun.eastmoney.com/获取新闻列表importtime,requests,jsonimportpandasaspdsession=requests.session()headers={'User-Agent'......
  • vue一些基础概念,核心理念,框架和库的区别,MVC和MVVM的区别,展示数据的几种方法、v-bind、
    1、什么是vue,核心理念,为什么学习vue1(单页面应用程序)用于构建用户界面的渐进式框架,采用自底向上增量开发的设计2数据驱动视图,组件化开发3轻量级框架、简单易学、虚拟的DOM、数据视图结构分离下面展示一些内联代码片。下面是vue的代码框架分为三部分:1.引入vue.js;2......
  • Requests请求方式有那些吗?这篇就够了
    Requests请求方式有那些吗?这篇就够了使用Python的requests库,您可以进行多种类型的HTTP请求.以下是一些常见的请求方式:GET请求:response = requests.get(url)POST请求:response = requests.post(url, data=data)PUT请求:response = requests.put(url......
  • requests.post传的data如果是直接使用python dict封装,有些服务端接收不了这种数据类型
    平时在自己的php项目里,使用dict方式组装data,然后requests.post,一点问题都没有。但是调了后端一个java的微服务接口,结果就一直报错422: 最后问了一下开发,得到提示“python好像还有个毛病,python的json对象转字符串的时候,转出来的字符串不是标准json字符串,还要做个字符串处理,变成......
  • springMVC中过滤器的实现
    过滤器使用Servlet3.0提供的@webFilter注解,配置过滤的URL规则,实现Filter接口,重写doFilter具体实现代码如下:importorg.springframework.stereotype.Component;importjavax.servlet.*;importjavax.servlet.annotation.WebFilter;importjava.io.IOException;@Component......
  • 实现一个自定义MVC
    在Spring核心思想之AOP:在自定义容器基础上实现AOP功能的容器上实现类似SpringMVC的功能。先分析下SpringMVC功能,在SpringMVC快速搭建初体验中:1、web.xml配置的功能被实现了WebApplicationInitializer的类替代,即不用解析web.xml配置文件直接执行WebApplicationIniti......
  • Spring MVC初体验
    使用maven框架构建SpringMVC项目,工具idea2023.2,jdk17,tomcat10。(之前使用tomcat9,与jdk17不兼容导致项目失败。在这个过程中失败很多次,有各种各样的原因,分别找到原因解决。)参考之前一篇文章SpringBootWeb项目整合jsp页面访问(非web项目改为web项目适用)。项目结构:......