【问题标题】:How can I set a cookie in a request using Fiddler?如何使用 Fiddler 在请求中设置 cookie?
【发布时间】:2011-03-21 11:59:36
【问题描述】:

在使用 Fiddler 向网站发出请求之前,我需要设置一个 cookie。我该怎么做?

【问题讨论】:

    标签: cookies fiddler


    【解决方案1】:

    简单...您需要根据您的请求设置标头值,如下所示:

    Cookie: YourCookieName=YourCookieValue
    

    【讨论】:

    • 这不会以客户端知道 cookie 存在的方式设置 cookie。指定的行也将有效地“隐藏”所有其他 cookie。
    • 现在偶然发现了这个问题,因为这个问题在谷歌中很高。对于多个 cookie,请使用 Cookie: CookieName1=CookieVal1; CookieName2=CookieVal2,对于路径/协议详细信息,请使用 Cookie: CookieName1=CookieVal1; CookieName2=CookieVal2; path=/; HttpOnly
    【解决方案2】:

    要使用FiddlerScript engine 执行此操作,请将以下代码添加到onBeforeRequest 方法中:

    oSession.oRequest["Cookie"] = (oSession.oRequest["Cookie"] + ";YourCookieName=YourCookieValue");
    

    这将保留已设置的任何其他 cookie。

    【讨论】:

    • 我使用这个单行来“替换” cookie 的值并设置 cookie 值。它还处理 Cookie 标头不是初始请求的一部分的情况。 oSession.oRequest['Cookie'] = oSession.oRequest['Cookie'] ? oSession.oRequest['Cookie'].Replace("YourCookieName=","ignoredYourCookieName=") + ";YourCookieName=YourCookieValue" : "YourCookieName=YourCookieValue";
    【解决方案3】:

    您需要更具体地说明您想要做什么。

    您可以编辑(或添加)出站 Cookie 标头以将 Cookie 发送到网站。您可以手动或通过FiddlerScript engine 执行此操作。但这并没有在客户端上“设置”cookie——它只是将它发送到服务器。如果你想在客户端设置一个cookie,你要么必须使用另一种方式,要么你可以在来自服务器的先前响应中注入一个Set-Cookie响应头,其中包含你要在客户端上设置的值。

    【讨论】:

    • 感谢 Eric,设置出站 cookie 标头正是我想要做的。 (顺便说一句,Fiddler 是一个非常出色的工具,我在一个由大约 250 名开发人员组成的团队中工作,每个开发人员几乎每天都在使用它。我们发现它只是诊断 REST 服务低级问题的门票。)跨度>
    【解决方案4】:

    您也可以使用 Fiddler Composer。

    1. 运行提琴手
    2. 打开顶部的 Composer 选项卡。

    如果您可以从您的网站的另一个请求开始,这是最简单的。为此,请捕获您要修改的请求,然后将其从 UI 拖到 composer 选项卡。

    这里有一个很好的解释:http://www.debugtheweb.com/Fiddler/help/composer.asp

    【讨论】:

      【解决方案5】:

      Fiddler 允许您重新发送/重建现有请求。有一个Request Builder。在以 RAW 形式重建时,修改您的 cookie。

      【讨论】:

      • 这对于现有请求来说很好 - 但这是一个需要 cookie 的新请求。
      【解决方案6】:

      此方案适用于基于 Cookie 的身份验证:

      如果您想测试启用了身份验证的 API/url,请尝试以下操作,我在 IIS 服务器上显示 MVC Web API。通常有不止 1 个 cookie 负责授权,因此您可能需要在 header 中发送超过 1 个 cookie,如下所示:

      User-Agent: Fiddler Host: localhost:51000 content-Type: application/json Cookie : .ASPXAUTH=xxxxx;ASP.NET_SessionId=yyyy;__RequestVerificationToken=zzzz
      

      【讨论】:

        【解决方案7】:

        运行Fiddler as a reverse Proxy时可以修改响应头 通过 FiddlerScript 在 OnBeforeResponse 方法中添加一行:

        static function OnBeforeResponse(oSession: Session) {
            // ...
            oSession.oResponse["Set-Cookie"] = "sessionToken=abc123; Expires=Wed, 09 Jun 2021 10:18:14 GMT";
        }
        

        还可以查看有关 Modifying a Request or Response 的 Fiddler 文档以获取更多信息。

        【讨论】:

          猜你喜欢
          • 2021-12-28
          • 1970-01-01
          • 2014-02-08
          • 2016-07-21
          • 2014-10-27
          • 2017-08-05
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多