У меня есть следующая настраиваемая функция ajax, которая отправляет данные обратно в файл PHP. Каждый раз, когда происходит публикация данных, я получаю следующие две ошибки:
Отказано в установке небезопасного заголовка "Content-length"
Отказано в установке небезопасного заголовка "Connection"
Код:
function passposturl(url1, params, obj)
{
//url1 = url1+"&sid="+Math.random();
xmlHttp = get_xmlhttp_obj();
xmlHttp.loadflag = obj;
xmlHttp.open("POST", url1, true);
//alert(url1);
//alert(params);
//alert(obj);
//alert(params.length);
xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlHttp.setRequestHeader("Content-length", params.length);
xmlHttp.setRequestHeader("Connection", "close");
xmlHttp.onreadystatechange = function ()
{
stateChanged(xmlHttp);
};
xmlHttp.send(params);
}
Что я делаю не так?
javascript
ajax
снайпер
источник
источник
Ответы:
Удалите эти две строки:
XMLHttpRequest не может устанавливать эти заголовки, они автоматически устанавливаются браузером. Причина в том, что, манипулируя этими заголовками, вы можете обманом заставить сервер принять второй запрос через то же соединение, не проходящий обычные проверки безопасности - это будет уязвимостью безопасности в браузере.
источник
Connection: close
вызывает? Если вы знаете, что запрос займет много времени, должна быть возможность запросить, чтобы он не прерывал постоянное соединение. Браузеры также не поддерживают конвейерную обработку запросов, поэтому, если длительный запрос поступает раньше обычного, он блокирует второй запрос на все время поддержки активности. Если бы длительный запрос мог использовать «Соединение: закрыть», тогда можно было бы запросить, чтобы он не прерывал постоянное соединение и не вызывал (например) ненужную 5-секундную задержку (где 5 секунд - это время поддержания активности).