前言介绍
这段时间一个项目后端用的是 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: https://chrome.google.com/webstore/detail/postman-interceptor/aicmkgpgakddgnaphhhpliifpcfhicfo
嗯...... 浏览下载安装需要 FQ...
创建环境
我们打开邮差, 点击页面右上角, 进行设定环境.
新建 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}}
点击发送, 成功打印
以上
来源: https://www.cnblogs.com/lishanlei/p/9550622.html