- 1
- 2
>> # HTML/4.01 says that line breaks are represented as "CR LF" pairs (i.e., `%0D%0A')
>> $content =~ s/(?<!%0D)%0A/%0D%0A/g if defined($content);
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−139
>> # HTML/4.01 says that line breaks are represented as "CR LF" pairs (i.e., `%0D%0A')
>> $content =~ s/(?<!%0D)%0A/%0D%0A/g if defined($content);
HTTP::Request::Common 6.04, строка 86
http://cpansearch.perl.org/src/GAAS/HTTP-Message-6.04/lib/HTTP/Request/Common.pm
Оно просто берёт и изменяет передаваемый контент. Любой. В том числе просто бинарные данные.
Dummy00001 13.08.2013 23:05 # 0
а откуда у тебя бинарные данные в HTTP запросе? в ответе я понимаю, но с бэйс64/етц народ трахается именно потому что запрос должен быть текстом. (или мои знания HTTP совсем устарели?)
P.S. вроде не так сильно устарели:
http://www.w3.org/TR/html401/interact/forms.html#h-17.13 для случая "multipart/form-data" ссылается на:
http://www.rfc-editor.org/rfc/rfc2045.txt который в 6.2 говорит что:
> As of
> the initial publication of this document, there are no standardized
> Internet mail transports for which it is legitimate to include
> unencoded binary data in mail bodies. Thus there are no
> circumstances in which the "binary" Content-Transfer-Encoding is
> actually valid in Internet mail.
другими словами, base64 все еще остается единственным способом посылать двоичные данные в запросе.
anonimb84a2f6fd141 13.08.2013 23:43 # 0
kainwinterheart 14.08.2013 07:44 # 0
bormand 14.08.2013 10:05 # +1
HTTP, емнип, нигде не требует.
Но портят данные они не из-за HTTP, а, внезапно, из-за HTML 4.01, которое в пункте 17.13.4 Form content types говорит нам: "Line breaks are represented as "CR LF" pairs (i.e., `%0D%0A')."
Имхо тут надо было бы какую-нибудь опцию, позволяющую работать в двух режимах - raw и html-compatible. Ибо на HTML свет клином не сошелся.
P.S. А все-таки. Почему не подошел multipart/form-data?
kainwinterheart 14.08.2013 12:08 # 0
- Хотя бы. С другой стороны, оно же не для работы с HTML, а для работы с HTTP. Причём тут вообще HTML у него - остаётся загадкой.
>> Почему не подошел multipart/form-data
- Используем Kyoto Tycoon, а в него если писать данные http-запросом вместо memcached-протокола или же его собственного бинарного протокола, то оно не понимает post с multipart/form-data.
bormand 14.08.2013 18:29 # 0
Основной юзкейс HTTP как бы, вот все под него и затачиваются, в ущерб остальными применениям...
> Используем Kyoto Tycoon
Понятно, т.е. протокол так требует.
guest 21.01.2017 07:01 # −6
guest 21.01.2017 06:13 # −6
Dummy00001 14.08.2013 13:29 # 0
еще раз: какие в ж@пу *двоичные* данные в *urlencoded* формате?
КЭП в отпуске, очевидно.
kainwinterheart 14.08.2013 13:33 # 0
Dummy00001 14.08.2013 13:50 # 0
guest 11.02.2017 06:20 # −6
bormand 14.08.2013 08:02 # 0
bormand 14.08.2013 08:17 # 0
Эм, а почему вы ориентируетесь на это RFC? RFC 2616 (HTTP 1.1 от 99 года) говорит об обратном.
http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.4.5
19.4.5 No Content-Transfer-Encoding
HTTP does not use the Content-Transfer-Encoding (CTE) field of RFC 2045. Proxies and gateways from MIME-compliant protocols to HTTP MUST remove any non-identity CTE ("quoted-printable" or "base64") encoding prior to delivering the response message to an HTTP client.
Т.е. если кто-то и применяет там base64, то применяется оно на прикладном уровне, а не на уровне HTTP протокола, где его использование вообще запрещено.
inkanus-gray 14.08.2013 10:52 # +1
kainwinterheart 14.08.2013 12:09 # 0
guest 10.03.2017 06:01 # −5
bormand 14.08.2013 18:30 # −1
guest 11.02.2017 05:57 # −6
wvxvw 14.08.2013 11:17 # 0
Вообще, если по-хорошему, то все документы которые для чего бы то ни было предписывают использование бейс64 нужно пытаться устранить как-нибудь. Это идитское требование совершенно несоответствующее современным жизненным реалиям.
eth0 14.08.2013 18:49 # 0
bormand 14.08.2013 19:03 # 0
3.14159265 15.08.2013 21:21 # 0
Если в http включить gzip, а включать его надо, то хаффман вернет обратно практически треть оверхеда.
Правда на реквесте не получится, да
guest 24.02.2017 19:41 # −5
wvxvw 14.08.2013 21:30 # 0
Нафига их передавать через текстовые каналы?
Stertor 14.08.2013 22:36 # −1
А ответ бинарными данными?
eth0 15.08.2013 21:05 # 0
Второе (чуть более реальное) применение - аттачи в почте до сих пор как-то так должны кодироваться.
А, чуть не забыл, тоже верх упоротости. У меня на работу есть RDP, но отключена передача файлов. Прямого доступа нет, та машина не в инторнетах, потому мелкие файлы я кодирую в base64, потом передаю через стандартный буфер обмена, а там распаковываю.
anonimb84a2f6fd141 15.08.2013 21:09 # 0
guest 25.02.2017 20:54 # −5
guest 03.03.2017 13:15 # −5
guest 14.02.2017 02:35 # −5
guest 11.02.2017 18:29 # −5
guest 25.04.2017 06:55 # −5
guest 25.04.2017 09:07 # −5
guest 25.04.2017 15:23 # −5
guest 25.04.2017 16:33 # −5
guest 25.04.2017 20:16 # −5
TeaBag 26.04.2017 21:51 # −5
guest 29.04.2017 16:54 # −5
guest 02.05.2017 09:13 # −5
guest 02.05.2017 13:54 # −5
guest 02.05.2017 15:09 # −5
guest 06.05.2017 19:05 # −1300
guest 06.05.2017 19:57 # −6
guest 06.05.2017 21:11 # −6
guest 06.05.2017 21:19 # −6
guest 06.05.2017 21:59 # −6
guest 06.05.2017 22:31 # −12
guest 30.05.2017 00:32 # 0
guest 30.05.2017 00:33 # 0
guest 30.05.2017 02:59 # 0
guest 30.05.2017 07:00 # 0
guest 30.05.2017 14:00 # 0
guest 30.05.2017 15:17 # 0
guest 30.05.2017 19:52 # 0
guest 30.05.2017 21:33 # 0
guest 30.05.2017 22:42 # 0
guest 02.06.2017 02:57 # 0
guest 02.06.2017 03:43 # 0
guest 02.06.2017 12:05 # 0
guest 02.06.2017 14:04 # 0
guest 02.06.2017 14:32 # 0
guest 02.06.2017 20:07 # 0
guest 02.06.2017 20:33 # 0
guest 02.06.2017 22:42 # 0
guest 02.06.2017 23:14 # 0
guest 02.06.2017 23:49 # 0
guest 03.06.2017 01:05 # 0
guest 03.06.2017 01:51 # 0
guest 03.06.2017 02:37 # 0
guest 03.06.2017 02:46 # 0
guest 03.06.2017 03:22 # 0
guest 03.06.2017 06:50 # 0
guest 03.06.2017 07:50 # 0
TeaBag 03.06.2017 14:32 # 0
guest 03.06.2017 09:19 # 0
guest 03.06.2017 11:28 # 0
guest 03.06.2017 12:22 # 0
guest 03.06.2017 14:26 # 0
guest 03.06.2017 18:30 # 0
guest 03.06.2017 22:26 # 0
guest8 28.12.2018 13:21 # −999
guest8 04.01.2019 10:37 # −999
guest8 04.01.2019 10:39 # −999
guest8 04.01.2019 10:40 # −999
guest8 04.01.2019 10:42 # −999
guest8 04.01.2019 10:45 # −999