HTTP/1.1 401 在 GET 请求的负载运行器的响应标头中未经授权
Posted
技术标签:
【中文标题】HTTP/1.1 401 在 GET 请求的负载运行器的响应标头中未经授权【英文标题】:HTTP/1.1 401 Unauthorized in Response Headers in Load runner for GET Requests 【发布时间】:2015-10-14 06:37:36 【问题描述】:我是 Load runner 的新手,在播放脚本时遇到问题
LR 12.50
操作系统 Windows 7 SP2
协议是移动 HTTP/html
录制模式为代理
让我解释一下我的场景
在执行以下函数时:
web_custom_request("authenticate",
"URL=https://ws-xx.xxx.com/tcs/rest/authenticate?include=user,company",
"Method=POST",
"Resource=0",
"RecContentType=application/json",
"Referer=",
"Snapshot=t1.inf",
"Mode=HTTP",
"EncType=application/json",
"Body=\"password\":\"xxx\",\"username\":\"xxx\",\"version\":\"1.0.40\"",
LAST);
对于上述 POST 方法,我得到如下响应
HTTP/1.1 200 OK\r\n
Date: Tue, 13 Oct 2015 19:19:21 GMT\r\n
Server: Apache-Coyote/1.1\r\n
Content-Type: application/json\r\n
Set-Cookie: dtCookie=DBE9311E44E5C47902702DC762030583|TXlBcHB8MQ; Path=/;
Domain=.xxx.com\r\n
Connection: close\r\n
Transfer-Encoding: chunked\r\n
这很好,现在第二个自定义请求如下所示
web_custom_request("profiles",
"URL=https://ws-test.xxx.com/tcs/rest/profiles",
"Method=GET",
"Resource=1",
"RecContentType=application/json",
"Referer=",
"Snapshot=t2.inf",
LAST);
对于重播日志中的上述 GET 请求:
401 未经授权的错误。
GET /tcs/rest/profiles HTTP/1.1\r\n
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT)\r\n
Accept: */*\r\n
Connection: Keep-Alive\r\n
Host: ws-test.xxx.com\r\n
Cookie: dtCookie=DBE9311E44E5C47902702DC762030583|TXlBcHB8MQ\r\n
\r\n
t=5921ms: 172-byte response headers for "https://ws-test.xxx.com/tcs/rest/profiles" (RelFrameId=1, Internal ID=2)
HTTP/1.1 401 Unauthorized\r\n
Date: Tue, 13 Oct 2015 19:19:22 GMT\r\n
Server: Apache-Coyote/1.1\r\n
Content-Type: application/json\r\n
Connection: close\r\n
Transfer-Encoding: chunked\r\n
\r\n
t=5922ms: 4-byte chunked response overhead for "https://ws-test.xxx.com/tcs/rest/profiles" (RelFrameId=1, Internal ID=2)
8b\r\n
t=5923ms: 139-byte chunked response body for "https://ws-test.xxx.com/tcs/rest/profiles" (RelFrameId=1, Internal ID=2)
"errors":["message":"Authentication required to access endpoint","status":"401","code":"
NotAuthenticated","header":"Not Authenticated"]
我推荐了this link。
我从上面的自定义请求的理解,登录成功但是下一个 后续请求失败。
我使用了 web_cleanup_cookies() 函数但没有解决问题。
我尝试使用以下函数捕获 Cookie ID
web_reg_save_param("COOKIE_ID",
"LR= Cookie: dtCookie=" ,
"RB= |TXlBcHB8MQ\r\n",
"Ord=All",
"RelFrameId=1",
"Search=All",
LAST);
web_add_header("Cookie",lr_eval_string("COOKIE_ID"));
现在的问题是在我的脚本中放置参数“COOKIE_ID”的位置
脚本中没有 COOKIE_ID 的值?
如何处理这个问题?谁能帮帮我。
【问题讨论】:
【参考方案1】:请在脚本中添加以下标题
web_set_sockets_option("SSL_VERSION","TLS");
web_set_user("username", "password", "domain:portno" );
web_set_sockets_option("INITIAL_BASIC_AUTH","1");
【讨论】:
@NaveenKumar,感谢您的建议。我尝试使用 web_set_sockets_option("INITIAL_BASIC_AUTH","1");然后我可以根据 Sivaramaraju 的建议在 Header 的快照视图下看到 AuthToken。我能够将 authToken 传递给下一个 GET 请求,但对其进行硬编码。【参考方案2】:-
在 Vugen 中,选择快照视图并比较记录和重播请求,怀疑重播请求中可能缺少标头。
如果 cookie 是唯一更改的内容,您可以使用 web_add_cookie 函数添加它。
【讨论】:
@Sivaramaraju,感谢您的建议。使用快照视图,我发现的authToken(“的authToken”:“eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJUQ1MiLCJhdWQiOiJXZWJTZXJ2aWNlQVBJIiwiaWF0IjoxNDQ0Mzg1ODU2LCJleHAiOjE0NDQ 0NzIyNTYsImluZm8iOnsidXNlcklkIjoxODIsImNvbXBhbnlOdW1iZXIiOiIyMDIwMDIyIiwicHJvZmlsZUlkIjoyODF9fQ.3pP9URRrmnRHnueszw4TrzDazPjRLmhG6bRir_FftAM”)是越来越传递到下一个自定义的请求。即 GET 请求是动态的。你能告诉我如何处理这个。 进展如何,作为标头或 cookie?基于以下步骤, 1. 如果它在标头中,则关联身份验证令牌,然后添加 web_add_header(“authToken”,“value”);在特定要求之前。 2.如果是在cookie中,关联认证token,然后添加web_add_header(“cookie”,”authToken=value”);在特定请求之前。 然后关联身份验证令牌并使用 web_add_header("authToken","correlatedvalue"); @Sivaramaraju,非常感谢您的帮助。最后使用您的方法解决了我们面临的 authToken 问题。但是我确实关联了 authToken 值,但是 vas throwing 错误找不到参数的值。但是我已将 authToken 值硬编码为 web_add_header("Authorization","Bearer eyJhbGciOiJIUzI1NiJ9. eyJpc3MiOiJUQ1MiLCJhdWQiOiJXZWJTZXJ2aWNlQVBJIiwiaWF0IjoxNDQ1MjQ2MjI1LCJleHAiOjE0NDUzMzI2MjUsImluZm8iOnsidXNlcklkIjoxMjUsImNvbXBhbnlOdW1iZXIiOiIyMDIwMDIyIiwicHJvZmlsZUlkIjoxOTV9fQ.lttdyOk2Ed52Ha5Q5rNy2hiR8jUywmvlICR3wY01kU“);我不知道这是否是好办法与否 SPAN>? @Sivaramaraju ,通过硬编码 authToken ,GET 请求被传递。它解决了我的问题,但不确定这样做是否是一种好方法。能否请您提出您的建议。以上是关于HTTP/1.1 401 在 GET 请求的负载运行器的响应标头中未经授权的主要内容,如果未能解决你的问题,请参考以下文章
android - EWS 2010 中的基本身份验证错误“HTTP/1.1 401 Unauthorized”
使用 Auth Headers 发送 axios get 请求时出现 401 错误