加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

如何使用Perl为HTTP请求发送不正确的Content-Length标头?

发布时间:2020-12-16 06:13:37 所属栏目:大数据 来源:网络整理
导读:我正在尝试调试在解析 Plack::Request时在服务器日志中显示的奇怪警告.在某些情况下,一个损坏的UserAgent将发送一个看起来像“6375,6375”的Content-Length标题,这显然是错误的. 要正确解决这个问题,我需要能够重现警告.我想将其包含在单元测试中,这样我就可
我正在尝试调试在解析 Plack::Request时在服务器日志中显示的奇怪警告.在某些情况下,一个损坏的UserAgent将发送一个看起来像“6375,6375”的Content-Length标题,这显然是错误的.

要正确解决这个问题,我需要能够重现警告.我想将其包含在单元测试中,这样我就可以确保在警告静音后没有回归.但是,我在使用Perl时遇到了麻烦.我知道这可以使用netcat和socat完成,但我不希望单元测试必须依赖其他二进制文件来安装.

这是我尝试过的:

#!/usr/bin/env perl

use strict;
use warnings;

use JSON::XS qw( encode_json );
use WWW::Mechanize;

my $mech = WWW::Mechanize->new;

$mech->add_handler(
    request_prepare => sub {
        my ( $req,$ua,$h ) = @_;
        $req->headers->header( 'Content-Length' => 9999 );
        return;
    }
);

my $json = encode_json( { foo => 'bar' } );

$mech->post(
    'http://example.com'/url,'Content-Length' => 999,Content          => $json
);

输出是:

Content-Length header value was wrong,fixed at /opt/perl5.16.3/lib/site_perl/5.16.3/LWP/Protocol/http.pm line 260.
200

这对我来说太有用了.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读