使用axios模拟表单提交
1.需求背景
最近在实验室写一个Spring前后端分离的项目,项目中使用Spring Security组件实现系统的认证和授权,当Security的认证模式设置为FormLogin时(如下代码),前端必须要使用表单且使用POST方法提交用户名和密码。否则后端无法接受前端提交的用户名和密码
http.formLogin()  //表单提交用户名和密码,且为POST
2.解决方法
这里介绍两种解决方法,第一种是老实地写一个表单提交(注意一定要使用POST请求)。第二种是使用axios模拟表单提交。
2.1表单提交
这种相信各位都会,就不赘述了。
2.2使用axios模拟表单请求
第一步:设置请求头Cotent-Type,这个必须要设置
headers: {
            'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'
}
第二步:设置格式化函数,将数据对象设置为类似为username=admin&password=123456这种类型
const transFun =(data = {}) => Object.entries(data).map(ent => ent.join("=")).join("&")
export const login = (user) => {
    return request({
        method: "POST",
        headers: {
            // 设置提交数据格式
            'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'
        },
        url: '/login',
        //设置序列化请求函数
        transformRequest: transFun
        data: user
    });
}
或者不用格式化函数使用FormData对象
export const login = (user) => {
    //使用FormData
    let data = new FormData();
    data.append("username",user.username)
    data.append("password",user.password)
    return request({
        method: "POST",
        headers: {
            'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'
        },
        data: data
    });
}
总结:以上两种模拟Form表单的请求,都要设置Cotent-Type类型和POST请求
使用axios模拟表单提交的更多相关文章
- <记录> axios 模拟表单提交数据
		
ajax 可以通过 FormData 对象模拟表单提交数据 第一种方式:自定义FormData信息 //创建formData对象 var formData = new FormData(); //添加 ...
 - 表单提交---前端页面模拟表单提交(form)
		
有些时候我们的前端页面总没有<form></form>表单,但是具体的业务时,我们又必须用表单提交才能达到我们想要的结果,LZ最近做了一些关于导出的一些功能,需要调用浏览器默认 ...
 - 项目总结15:JavaScript模拟表单提交(实现window.location.href-POST提交数据效果)
		
JavaScript模拟表单提交(实现window.location.href-POST提交数据效果) 前沿 1-在具体项目开发中,用window.location.href方法下载文件,因windo ...
 - 由于想要实现下载的文件可以进行选择,而不是通过<a>标签写死下载文件的参数,所以一直想要使用JFinal结合ajax实现文件下载,但是ajax实现的文件下载并不能触发浏览器的下载文件弹出框,这里通过模拟表单提交实现同样的效果。
		
由于想要实现下载的文件可以进行选择,而不是通过<a>标签写死下载文件的参数,所以一直想要使用JFinal结合ajax实现文件下载(这样的话ajax可以传递不同的参数),但是ajax实现的文 ...
 - 利用HttpWebRequest模拟表单提交  JQuery 的一个轻量级 Guid 字符串拓展插件.  轻量级Config文件AppSettings节点编辑帮助类
		
利用HttpWebRequest模拟表单提交 1 using System; 2 using System.Collections.Specialized; 3 using System.IO; ...
 - HTTP通信模拟表单提交数据
		
前面记录过一篇关于http通信,发送数据的文章:http://www.cnblogs.com/hyyq/p/7089040.html,今天要记录的是如何通过http模拟表单提交数据. 一.通过GET请 ...
 - C# Winform利用POST传值方式模拟表单提交数据(Winform与网页交互)
		
其原理是,利用winfrom模拟表单提交数据.将要提交的參数提交给网页,网页运行代码.得到数据.然后Winform程序将网页的全部源码读取下来.这样就达到windows应用程序和web应用程序之间传參 ...
 - c# 模拟表单提交,post form 上传文件、大数据内容
		
表单提交协议规定:要先将 HTTP 要求的 Content-Type 设为 multipart/form-data,而且要设定一个 boundary 参数,这个参数是由应用程序自行产生,它会用来识别每 ...
 - 利用HttpWebRequest模拟表单提交
		
using System; using System.Collections.Specialized; using System.IO; using System.Net; using System. ...
 
随机推荐
- [DB] 数据库的连接
			
概述 集合运算:交,差,并,笛卡尔积 关系运算:选择,投影,连接,除 集合运算是关系运算的基础,关系运算可以用SQL语句表达 连接(join):从两个关系(表)的笛卡儿积中选取属性(列)间满足一定条件 ...
 - echo -n -e "请输入重启间隔的时间(分钟):\t"
			
echo -n -e "请输入重启间隔的时间(分钟):\t"read interval##echo -n "Your choice is " # 加上 -n 可 ...
 - linux patch中的p0和p1的区别
			
命令patch的主要作用是生成diff文件和应用diff文件.举个例子来讲,当发现某个程序出现bug需要打补丁时,patch便是一个好工具. diff文件头: [root@localhost kern ...
 - Linux_配置本地YUM源(RHEL8)
			
[RHEL8] Linux-RHEL8配置本地YUM 源,按照之前传统的配置本地YUM的方法肯定不行,在RHEL8版本的软件源发生了变化,在RHEL8版本的软件仓库分成了两部分:[AppStream] ...
 - 使用nmcli命令配置网络
			
!!!前言 nmcli是redhat7或者centos7之后的命令该命令可以完成网卡上所有的配置工作,并且可以写入配置文件,永久生效 1.NetworkManager NetworkManager是管 ...
 - 11.7 iostat: I/O信息统计
			
iostat是I/O statistics(输入/输出统计)的缩写,其主要功能是对系统的磁盘I/O操作进行监视.它的输出主要是显示磁盘读写操作的统计信息,同时也会给出CPU的使用情况.同vmstat命 ...
 - DS1302应用电路
			
http://www.diangon.com/wenku/rd/danpianji/201501/00017904.html
 - 【Web前端HTML5&CSS3】11-定位
			
笔记来源:尚硅谷Web前端HTML5&CSS3初学者零基础入门全套完整版 目录 定位的简介 1. 相对定位 偏移量(offset) 相对定位的特点 2. 绝对定位 绝对定位的特点 包含块(co ...
 - vue相关面试知识点总结
			
vue v-for循环中为什么要用key?为什么index不能作为key? key 的特殊 attribute 主要用在 Vue 的虚拟 DOM 算法,在新旧 nodes 对比时辨识 VNodes.如 ...
 - win10家庭中文版CUDA+CUDNN+显卡GPU使用tensorflow-gpu训练模型安装过程(精华帖汇总+重新修改多次复现)
			
查看安装包 pip list 本帖提供操作过程,具体操作网上有好多了,不赘述.红色字体为后来复现出现的问题以及批注 题外话: (1)python 的环境尽量保持干净,尽量单一,否则容易把自己搞晕,不知 ...