Назад | Перейти на главную страницу

Повреждение HTTP-запроса

На сайте, который получает очень большой объем трафика, небольшой процент запросов приходит следующим образом:

http://cheezburger.com/ScriptResource.axd?d=zaVpgH63ePt90pn</a>                                                   <br />                        <br />                        <p>                            <a id=

На странице реферера есть такая строка:

<script src="/ScriptResource.axd?d=zaVpgH63ePt90p8fuEYkPAKFZuziMYsiIUbmxDb-gQ23Cx78LNJNFXTqKciA4ND_frR-_r9UKsdtLPk6M08xyk6cXFSLUrbBGDlvPIf-F9w1&amp;t=ffffffffd5e08dd5" type="text/javascript"></script>

и еще пара строк намного дальше:

    <a id="login_LoginState_LoginButton" class="button1" UseSubmitBehavior="false" href="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(&quot;login$LoginState$LoginButton&quot;, &quot;&quot;, true, &quot;ctl00$Login1&quot;, &quot;&quot;, false, true))">Log In</a>
<br /> 
<br /> 
<p> 
    <a id="login_LoginState_PasswordRecoveryLink" href="/forgot.aspx">Forgot Password?</a> 

Получается, что часть страницы удалена. Похоже, что это происходит чаще в IE, чем в Firefox, но это может быть связано с тем, что у нас больше трафика IE, чем FireFox. У нас включено сжатие HTTP, но я не знаю, проблема ли в этом.

Итак, мой вопрос в том, что происходит и как это можно исправить?

Мы видим то же самое здесь в нашем приложении, это известная проблема IE8, которая была открыта некоторое время. Вот отчет об ошибке Microsoft Connect.

В основном на каком-то уровне IE8 просто игнорирует потерю пакетов и выполняет рендеринг, добавляя 2 потока пакетов вместе и игнорируя отсутствующий. В результате на вашем сервере несколько неверных URL-адресов. Поскольку в большинстве случаев пакеты имеют примерно одинаковый размер, вы часто будете видеть URL-адреса, которые начинаются одинаково с некоторым случайным окончанием сценария.

Что ж, SO не получает столько запросов, сколько icanhascheezburger.com, это точно :) но я могу сказать вам, что мы действительно получаем редкие запросы от браузеров, которые явно ... сломаны ... в каком-то фундаментальном смысле.

Обычно это связано с частями веб-сайта (ссылки, код и т. Д.), Созданными с помощью JavaScript.

Очевидно, браузер каким-то образом так сильно испортил код JavaScript, что полученный в результате запрос к нам полностью нарушен, что не имеет смысла. Пример. Голосование за нас выглядит так:

/posts/12345/vote/2

но иногда мы получали

/posts/true/vote/2

"правда"? Какого черта? Раньше мы смотрели на них, но теперь просто игнорируем их.

просто игнорируйте запросы, это, скорее всего, из-за сломанных прокси или ошибок DNS

Я не раз замечал, что IE начинал загрузку страницы, затем он начинает ее рендеринг до того, как закончится, что приведет к неправильному формированию ссылок. Обычно в таких случаях JS-скрипты загружаются ближе к концу страницы. На некоторых больших страницах IE загружал около половины страницы, пытался выполнить рендеринг, а затем вежливо останавливал и сбрасывал соединение с сервером, например, WTF?

В любом случае, в некоторых случаях, просто переместив JS-файлы наверх, а затем начав ближе к низу, можно решить некоторые проблемы.

С тех пор мы выбросили безумие js-линкбилдинга :)