前言介绍

这段时间一个项目后端用的是laravel。在写API接口时通过Postman6进行测试。但是在测试后形式的接口时laravel自带了CSRF验证机制。这就很尴尬了...

所以我们的目的在使用Postman通过XSRF的验证,以测试POST的请求。还是以laravel为例子,Laravel会返回到浏览器的GET请求时将XSRF-TOKEN写在cookie中。因此我们需要从cookie中取到XSRF-TOKEN,并附在POST请求的报头中传送出去。以达到绕过Laravel的跨站请求伪造验证。

安装Postman Interceptor(Chrome扩展功能)

使用Postman如果通过自己拼接url,自己造数据,是非常麻烦的。因此选择Postman + Postman拦截器,使用Postman interceptor可以拦截到网页请求,同时传到postman的历史列表中,然后我们只需要在postman中修改一下网址就可以直接发送了。

Laravel通过镀铬作为拦截器来记录的cookie,因此要先安装邮递员在Chrome浏览器上的扩展程序。

下载地址:https//chrome.google.com/webstore/detail/postman-interceptor/aicmkgpgakddgnaphhhpliifpcfhicfo

嗯......浏览下载安装需要翻墙...

创建环境

我们打开邮差,点击页面右上角,进行设定环境。

新建evnironment

输入新建的环境名称,并按下 “添加”

选择刚刚新建的环境

发送GET请求,以取得XSRF令牌

新建一个获得请求,并在邮递员的测试标签中加入下面代码:

pm.environment.set(
"XSRF-TOKEN", //此為環境變數名稱
decodeURIComponent(pm.cookies.get("XSRF-TOKEN"))
)
 
加入的这个代码会在请求服务器成功返回时执行,因此可以取得的cookie,并存入邮递员的环境变量,用来在后请求时使用。

​访问刚刚创建的get请求,点击发送,检查XSRF令牌是否在环境变量中

POST附带XSRF令牌

Laravel预设要求发布时需要HTTP标头附带XSRF令牌

以下是我测试的代码:

//web.php
Route::post('posttest', 'OperateController@postTest'); //OperateController.php
public function postTest(Request $request) {
var_dump('post test');
}

新增POST标签,并在Header中增加XSRF令牌

格式是:{{ “环境变量”}}:用来取得的环境变量值。

X-XSRF-TOKEN:{{XSRF-TOKEN}}

​点击发送,成功打印

以上

通过Postman进行post请求时传递X-XSRF-TOKEN的更多相关文章

  1. spring boot:用cookie保存i18n信息避免每次请求时传递参数(spring boot 2.3.3)

    一,用cookie保存i18n信息的优点? 当开发一个web项目(非api站)时,如果把i18n的选择信息保存到cookie, 则不需要在每次发送请求时都传递所选择语言的参数, 也不需要增加heade ...

  2. angularjs中ajax请求时传递参数的方法

    method1方法使用的是params参数,该用法会把参数直接附加到url中 method2方法使用的是data参数,该参数会把页面参数类型从默认的multipart/form-data改为appli ...

  3. ASP.NET MVC API与JS进行POST请求时传递参数 -CHPowerljp原创

    在API前添加    [HttpPost] 表示只允许POST方式请求 [HttpPost] public IHttpActionResult Get_BIGDATA([FromBody]Datas  ...

  4. JS请求报错:Unexpected token T in JSON at position 0

    <?php /* 最近做一个ajax validate表单验证提交的代码,在ajax提交的时候 JS请求报错:Unexpected token T in JSON at position 0 描 ...

  5. Feign发送Get请求时,采用POJO对象传递参数的最终解决方案 Request method 'POST' not supported (附带其余好几个坑)

    yml: feign: httpclient: enabled: true properties: #feign feign.httpclient.enabled=true <!-- https ...

  6. DES加密与解密在GET请求时解密失败的问题

    DES加密与解密在GET请求时解密失败的问题 在数据进行加密后传递会更安全,但可能有个问题:就是Url编码问题,如果不对Url进行编码直接加密,那么在解密时,如果字符串存在 “+”,这种特殊符号,在解 ...

  7. android83 Activity的生命周期,启动模式,返回时传递数据

    #Android四大组件 * Activity * BroadCastReceiver * Service * ContentProvider #Activity生命周期 * oncreate:Act ...

  8. ajax跨域请求时,sessionId不一样,导致无法记住登陆状态

    遇到这样一个场景,就是前端的域是dev,请求接口时,接口的域是beta,即使在服务端设置了cookie存放的域,'COOKIE_DOMAIN'   =>  '.roboming.com',虽然c ...

  9. python利用requests库模拟post请求时json的使用

    我们都见识过requests库在静态网页的爬取上展现的威力,我们日常见得最多的为get和post请求,他们最大的区别在于安全性上: 1.GET是通过URL方式请求,可以直接看到,明文传输. 2.POS ...

随机推荐

  1. swift static func 和 class func

    Swift中static func 相当于class final func.禁止这个方法被重写 clas func  可以被继承重写

  2. Java日期时间处理

    Java 日期时间处理 一.时间相关类 java.lang.System java.util.Date java.util.Calendar java.util.GregorianCalendar j ...

  3. Java12-java语法基础(十一)继承

    Java12-java语法基础(十一)继承 一.继承 学习要求: 1. 理解继承的概念与作用 2. 掌握继承的实现机制 3.理解继承中的覆写与覆盖 4.掌握super关键字的使用 回顾: 1.对客观世 ...

  4. node.js中使用yargs来处理命令行参数

    yargs库能够方便的处理命令行参数. 一.安装 yargs npm install yargs --save 二.读取命令行参数 const yargs = require('yargs'); le ...

  5. vue修改端口号

    vue修改端口号   默认端口号 修改端口号 重新启动项目 npm run dev        

  6. ie每次登陆出现:Windows安全性 iexplore.exe 正在连接到 记住我的凭证不起作用

    解决方案: ie浏览器--设置--Intenet选项--安全--Internet--自定义级别--用户身份验证--登陆 勾选自动使用当前用户名和密码登陆 确定--确定

  7. JVM总括四-类加载过程、双亲委派模型、对象实例化过程

    JVM总括四-类加载过程.双亲委派模型.对象实例化过程 目录:JVM总括:目录 一. 类加载过程 类加载过程就是将.class文件转化为Class对象,类实例化的过程,(User user = new ...

  8. 创建.NET core的守护进程

    http://www.cnblogs.com/savorboard/p/dotnetcore-supervisor.html

  9. http协议介绍及get与post请求、响应状态码

    HTTP:  通信双方如果想要通信就必须遵循一定的规则,我们把这个规则称之为HTTP协议! 报文:  HTTP协议通信的内容我们称之为:报文 报文格式:    报文首部 空行 报文主体 1.请求报文 ...

  10. 2.3.7synchronized代码块有volatile同步的功能

    关键字synchronized可以使多个线程访问同一个资源具有同步性,而且他还具有将线程工作内存中的私有变量与公共内存中的变量同步的功能. package com.cky.thread; /** * ...