使用jmeter老是遇到403的问题

作者在调用接口时遇到403错误,解决原因是账号同时登录导致权限受限。后续发现缺少菜单id参数头时,超级管理员不受影响。

 

在调接口时老是会遇到403,Access Denied报错,但是在调其他接口比如登录都能成功,博主就很困惑,百度了很多,说的时没有权限的问题,但是也不知道具体是哪里的权限没有。

并且尝试重新登录,重新调用也不成功,后面才发现其实就是当前登录的账号在其他也在登录(博主用token在电脑上使用了),两个账号不能同时使用导致的,只要退掉其中一个就可以了,虽然不是很难的问题,但是还是想记录一下。

更新:最近又遇到了这个问题,发现同样的账号有的可以,有的就提示403,排查了一下是参数头里面少传了菜单id,而没问题那个是超级管理员,所以没有报错。

在 Apache JMeter 中,使用 `${}` 引用变量是一种常见操作,用于动态传递参数,例如在请求中使用参数化数据或提取响应中的值进行后续请求。如果遇到 `${}` 引用参数失败的问题,可能是由于以下几个原因导致的: ### 1. 变量未正确设置 确保变量已经在前置处理器、响应提取器或配置元件中被正确设置。例如,若使用 **正则表达式提取器** 提取响应中的某个值,必须确保正则表达式匹配成功,并且变量名与 `${}` 中引用的变量名一致。 ```java // 示例:正则表达式提取器配置 Reference Name: token Regular Expression: "access_token":"(.*?)" Template: $1$ ``` 在后续请求中使用 `${token}` 进行引用。 ### 2. 变量作用域问题 JMeter 中变量的作用域是线程级的,即每个线程(虚拟用户)拥有独立的变量空间。如果在某个线程中设置了变量,其他线程无法访问该变量。如果需要跨线程共享变量,可以使用 **BeanShell Sampler** 或 **JSR223 Sampler** 设置为 `props.put("varName", value)`,然后在其他线程中使用 `props.get("varName")` 来获取。 ```groovy // 设置全局变量 props.put("globalVar", "testValue") // 获取全局变量 def value = props.get("globalVar") ``` ### 3. 使用 `${}` 的位置不支持变量解析 某些 JMeter 组件(如 **CSV Data Set Config** 的文件名字段)不支持直接使用 `${}` 引用变量。此时可以使用 **__V()** 函数或 **__eval()** 函数来间接解析变量。 ```java ${__V(PATH_TO_FILE)} ${__eval(${PATH_TO_FILE})} ``` ### 4. 变量名包含特殊字符或大小写不一致 JMeter 对变量名的大小写是敏感的,例如 `${Token}` 和 `${token}` 是两个不同的变量。此外,变量名中不应包含空格或非法字符,否则可能导致引用失败。 ### 5. 使用 `${}` 的字段未启用变量解析 某些组件的字段默认不解析变量,需要手动启用。例如在 **HTTP 请求** 的路径字段中,勾选 “Use KeepAlive” 旁边的 “Use Variables” 选项,以确保变量能够被正确解析。 ### 6. 使用了错误的函数或语法 JMeter 提供了多种函数,例如 `${__Random(1,100)}` 可以生成随机数。如果函数使用不当,可能导致变量无法解析。应确保函数名称和参数格式正确。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值