我正在使用 Ga特林为网站编写负载测试脚本,即使在添加了必要的 cookie 进行身份验证之后,我在响应中遇到了 403 Forbidden 错误。我已经仔细检查了 cookie、标头和 URL,但仍然无法解决此问题。
package assignment7;
import static io.gatling.javaapi.core.CoreDsl.*;
import static io.gatling.javaapi.http.HttpDsl.*;
import io.gatling.javaapi.core.*;
import io.gatling.javaapi.http.*;
public class AssignmentSimulation extends Simulation {
// http config
private HttpProtocolBuilder httpProtocol = http
.baseUrl("https://staging.com")
.acceptHeader("application/json, text/plain, */*")
.acceptEncodingHeader("gzip, deflate, br")
.acceptLanguageHeader("en-US,en;q=0.9")
.contentTypeHeader("application/json")
.userAgentHeader("Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36 Edg/117.0.2045.47");
// Scenario definition
private ScenarioBuilder scn = scenario("Load Testing")
.exec(http("Accessing Website")
.get("/")
.check(status().saveAs("status")))
.exec(addCookie(Cookie("stgoauth", "ZW1haWw6ZGFybGFAa2FsaWJyci5jb20gdXNlcjo=")
.withDomain(".staging.com")
.withPath("/")
.withSecure(true)))
.exec(session -> {
int responseStatus = session.getInt("status"); // Retrieve the saved response status
System.out.println("Response Code: " + responseStatus);
return session;
});
//load simulation
{
setUp(
scn.injectOpen(atOnceUsers(1))
).protocols(httpProtocol);
}
}
我将非常感谢任何指导或见解,解释为什么尽管正确添加了 cookie,我仍然收到 403 错误。还有什么我可能遗漏的东西或者我应该注意的加特林常见陷阱吗?预先感谢您的帮助!
您的请求域 (
staging.com
) 与您的 Cookie 域 (.staging.com
) 不匹配,因此不会发送 Cookie。查看RFC6265了解更多详情。
如果您修复 cookie 的域并使用
staging.com
,事情就会按预期进行。
我改变了场景的顺序。访问网站之前先设置cookie。
private ScenarioBuilder scn = scenario("Load Testing")
.exec(addCookie(Cookie("stgoauth", "ZW1haWw6ZGFybGFAa2FsaWJyci5jb20gdXNlcjo=")
.withDomain(".staging.com")
.withPath("/")
.withSecure(true)))
.exec(http("Accessing Website")
.get("/")
.check(status().saveAs("status")))
.exec(session -> {
int responseStatus = session.getInt("status"); // Retrieve the saved response status
System.out.println("Response Code: " + responseStatus);
return session;
});