In Progress Telerik Fiddler Web Debugger 有没有办法在 AutoResponder 中自动调整 Content-Length?
In Progress Telerik Fiddler Web Debugger is there a way to adjust Content-Length automatically in AutoResponder?
我正在使用 fiddler autoresponder return 一个不同于最初从我的服务器加载的 JS 文件。调整后的文件使用:
HTTP/1.1 200 OK
Cache-Control: private, max-age=31536000
Content-Type: application/javascript
...other headers
Content-Length: 37010
...the javascript code
在文件的顶部,Content-Length header 不会自动调整为已编辑的文件。所以我必须尝试加载我的更改,我的应用程序会崩溃,因为 Content-Length 是错误的,但随后我检查提琴手 'transformer' 选项卡以查看我的请求 body 实际有多少字节,在我修改过的文件中更新它,再次刷新然后它就可以工作了。
我曾尝试将编码更改为分块,这样我就可以省去 Content-Length header,但我认为我的应用出于某种原因不知道如何解码分块。
所以我的问题是,有没有办法自动更新 auto-responder 中的 Content-Length?
您可以简单地使用 Fiddler classic 中的 FiddlerScript 来构建您的自动回复器。这样内容长度就会自动设置:
static function OnBeforeRequest(oSession: Session) {
// ... some other FiddlerScript code
// host is e.g. "localhost:3000"
if (oSession.HostnameIs("<host>") && oSession.uriContains("<file name>.js")) {
oSession.utilCreateResponseAndBypassServer();
oSession["ui-backcolor"] = "lime"; // Makes it more visible
if (!oSession.LoadResponseFromFile("<file path>.js")) {
throw new ApplicationException("LoadResponseFromFile Failed!! ");
}
// Just loads forever if Content-Length is not added
oSession.oResponse["Content-Length"] = oSession.responseBodyBytes.GetLength(0);
}
}
我正在使用 fiddler autoresponder return 一个不同于最初从我的服务器加载的 JS 文件。调整后的文件使用:
HTTP/1.1 200 OK
Cache-Control: private, max-age=31536000
Content-Type: application/javascript
...other headers
Content-Length: 37010
...the javascript code
在文件的顶部,Content-Length header 不会自动调整为已编辑的文件。所以我必须尝试加载我的更改,我的应用程序会崩溃,因为 Content-Length 是错误的,但随后我检查提琴手 'transformer' 选项卡以查看我的请求 body 实际有多少字节,在我修改过的文件中更新它,再次刷新然后它就可以工作了。
我曾尝试将编码更改为分块,这样我就可以省去 Content-Length header,但我认为我的应用出于某种原因不知道如何解码分块。
所以我的问题是,有没有办法自动更新 auto-responder 中的 Content-Length?
您可以简单地使用 Fiddler classic 中的 FiddlerScript 来构建您的自动回复器。这样内容长度就会自动设置:
static function OnBeforeRequest(oSession: Session) {
// ... some other FiddlerScript code
// host is e.g. "localhost:3000"
if (oSession.HostnameIs("<host>") && oSession.uriContains("<file name>.js")) {
oSession.utilCreateResponseAndBypassServer();
oSession["ui-backcolor"] = "lime"; // Makes it more visible
if (!oSession.LoadResponseFromFile("<file path>.js")) {
throw new ApplicationException("LoadResponseFromFile Failed!! ");
}
// Just loads forever if Content-Length is not added
oSession.oResponse["Content-Length"] = oSession.responseBodyBytes.GetLength(0);
}
}