尽管添加了正确的 Cookie,但在 Ga特林中仍出现 403 禁止错误 - 需要故障排除帮助

问题描述 投票:0回答:2

我正在使用 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 错误。还有什么我可能遗漏的东西或者我应该注意的加特林常见陷阱吗?预先感谢您的帮助!

java load-testing gatling
2个回答
0
投票

您的请求域 (

staging.com
) 与您的 Cookie 域 (
.staging.com
) 不匹配,因此不会发送 Cookie。查看RFC6265了解更多详情。

如果您修复 cookie 的域并使用

staging.com
,事情就会按预期进行。


0
投票

我改变了场景的顺序。访问网站之前先设置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;
        });
© www.soinside.com 2019 - 2024. All rights reserved.