httprunner系列1---提取cookie

参考:https://www.cnblogs.com/yoyoketang/default.html?page=5

1、Django 的CSRF保护机制:

(1)CSRF是跨站点伪造请求

(2)django第一次响应来自某个客户端请求时,会随机生成一个Token,将token放进cookie,每次Post请求都会带上cookie

① 在返回的 HTTP 响应的 cookie 里,django 会为你添加一个 csrftoken 字段,其值为一个自动生成的 token

② 在所有的 POST 表单时,必须包含一个 csrfmiddlewaretoken 字段 (只需要在模板里加一个 tag, django 就会自动帮你生成,见下面)

③ 在处理 POST 请求之前,django 会验证这个请求的 cookie 里的 csrftoken 字段的值和提交的表单里的 csrfmiddlewaretoken 字段的值是否一样。如果一样,则表明这是一个合法的请求,否则,这个请求可能是来自于别人的 csrf 攻击,返回 403 Forbidden.

④ 所有 ajax POST 请求里,添加一个 X-CSRFTOKEN header,其值为 cookie 里的 csrftoken 的值

2、Httprunner写用例时,需要关联cookie,若没有关联,会导致403错误(动态关联cookie)

httprunner继承了request优点,会自动管理cookie,不需要再次提取
 1 -   config:
 2         name: test login api demo
 3         variables: {}
 4         request:
 5             base_url: http://49.235.x.x:80xx
 6 -   test:
 7         name: 先访GET问登录首页,获取cookies
 8         request:
 9             method: GET
10             url: /xadmin/
11         extract:
12         -   csrfmiddlewaretoken: name='csrfmiddlewaretoken' value='(.+?)'  # 页面正则提取隐藏参数csrfmiddlewaretoken
13         validate:
14         -   eq:
15             - status_code
16             - 200
17 
18 -   test:
19         name: 登录用例
20         request:
21             headers:
22                 Content-Type:  application/x-www-form-urlencoded
23             data:
24                 csrfmiddlewaretoken: $csrfmiddlewaretoken
25                 username: admin1
26                 password: 1111111*****
27                 this_is_the_login_form: "1"
28                 next: /xadmin/
29             method: POST
30             url: /xadmin/
31         validate:
32         -   eq:
33             - status_code
34             - 200

 

posted on 2020-03-20 13:16  ChanXM  阅读(1488)  评论(0)    收藏  举报

导航