Символы новой строки отправляются по-другому - PullRequest
2 голосов
/ 02 июня 2009

Мне было интересно, может ли кто-нибудь пролить свет на это поведение браузера:

У меня есть форма с текстовой областью, которая отправляется на сервер либо через XHR (с использованием jQuery, я также пытался с простым XMLHttpRequest просто исключить jQuery и результат такой же) или «по старинке» путь через форму отправки. В обоих случаях используется метод = "POST". Оба способа подчиняются одному и тому же сценарию на сервере.

Теперь забавная часть: если вы отправляете через XHR символы новой строки передаются как "% 0A" (или \ n, если я не ошибаюсь), и если вы отправляете обычным способом, они передаются как "% 0D% 0A "(или \ r \ n). Это, конечно, вызывает некоторые проблемы на стороне сервера, но это не вопрос здесь. Я просто хотел бы знать, почему эта разница? Разве новые строки не должны передаваться одинаково, независимо от того, какой метод отправки вы используете? Какие есть другие различия (если есть)?

Ответы [ 2 ]

2 голосов
/ 02 июня 2009

XMLHttpRequest будет при отправке XML вырезать символы CR из потока. Это соответствует спецификации XML, которая указывает, что CRLF должен быть нормализован до простого LF.

Следовательно, если вы упакуете свой контент как XML и отправите его через XHR, вы потеряете CR.

2 голосов
/ 02 июня 2009

В части 3.7.1 из RFC2616 (HTTP1.1) он позволяет \ r \ n, \ r, \ n представлять новую строку.

HTTP ослабляет это требование и позволяет транспортировка текстовых носителей с одним простым CR или LF, представляющим строку перерыв, когда это делается последовательно для всего тела-сущности. HTTP приложения ДОЛЖНЫ принимать CRLF, голый CR и голый LF как представитель разрыва строки в текстовом мультимедиа, полученном по HTTP.

Но это не относится к структурам управления:

Эта гибкость в отношении разрывы строк применяются только к текстовым носителям в теле объекта; голый CR или LF НЕ ДОЛЖЕН быть заменен на CRLF в любом из элементов управления HTTP структуры (такие как поля заголовка и границы нескольких частей).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...