Я думаю, что у Дэна Беккера есть правильная идея, но переизбрание abs(C-B)
и abs(C-A)
означает, что сравниваются обновленные матрицы, а не оригинальные .
Я не думаю, что это то, что вы хотите, так что это исправленная версия его метода:
CmA = abs(C-A);
CmB = abs(C-B);
ind = Cma < CmB; C(ind) = A(ind);
ind = CmA > CmB; C(ind) = B(ind);
C(CmA == CmB) = 0;
К сожалению, нет API, чтобы дать Вам заголовки ответа HTTP для Вашего начального запроса страницы. Это было исходным вопросом, отправленным здесь. Это было , неоднократно спрашивал также, потому что некоторые люди хотели бы получить фактические заголовки ответа исходного запроса страницы, не выпуская другой.
, Если Запрос HTTP сделан по Ajax, возможно получить заголовки ответа с getAllResponseHeaders()
метод. Это - часть XMLHttpRequest API. Чтобы видеть, как это может быть применено, проверьте fetchSimilarHeaders()
функция ниже. Обратите внимание, что это - обходное решение к проблеме, которая не будет надежна для некоторых приложений.
myXMLHttpRequest.getAllResponseHeaders();
API был определен в следующей рекомендации кандидата для XMLHttpRequest: XMLHttpRequest - Кандидат W3C Рекомендация 3 августа 2010
А именно, getAllResponseHeaders()
метод был определен в следующем разделе: w3.org: XMLHttpRequest
: getallresponseheaders()
метод
документация MDN хороша, также: developer.mozilla.org: XMLHttpRequest
.
Это не даст Вам информацию об исходном запросе страницы заголовки ответа HTTP, но это могло использоваться для высказывания образованных предположений о том, каковы те заголовки были. Больше на этом описан затем.
Этот вопрос сначала задали несколько лет назад, спросив конкретно о том, как достигнуть исходные заголовки ответа HTTP для текущая страница (т.е. та же страница, в которой JavaScript работал). Это - совершенно другой вопрос, чем простое получение заголовков ответа для любого Запроса HTTP. Для начального запроса страницы заголовки не легко доступны к JavaScript. Оценивает ли заголовок Вас, нуждаются, будет надежно и достаточно последователен, если Вы запрашиваете, чтобы та же страница снова через Ajax зависела от Вашего конкретного приложения.
следующее несколько предложений для того, чтобы обходить ту проблему.
, Если ответ в основном статичен и заголовки, как ожидают, не изменятся очень между запросами, Вы могли выполнить запрос Ajax для той же страницы, Вы в настоящее время включены и предполагаете, что они, они - те же значения, которые были частью ответа HTTP страницы. Это могло позволить Вам получать доступ к заголовкам, Вам нужно использование хорошего XMLHttpRequest API, описанного выше.
function fetchSimilarHeaders (callback) {
var request = new XMLHttpRequest();
request.onreadystatechange = function () {
if (request.readyState === XMLHttpRequest.DONE) {
//
// The following headers may often be similar
// to those of the original page request...
//
if (callback && typeof callback === 'function') {
callback(request.getAllResponseHeaders());
}
}
};
//
// Re-request the same page (document.location)
// We hope to get the same or similar response headers to those which
// came with the current page, but we have no guarantee.
// Since we are only after the headers, a HEAD request may be sufficient.
//
request.open('HEAD', document.location, true);
request.send(null);
}
Этот подход будет проблематичен, если действительно необходимо полагаться на значения, являющиеся последовательным между запросами, так как Вы не можете полностью гарантировать, что они - то же. Это собирается зависеть от Вашего определенного приложения и знаете ли Вы, что значение, в котором Вы нуждаетесь, является чем-то, что не будет изменяться от одного запроса до следующего.
существует некоторые свойства BOM (Объектная модель Браузера), который браузер определяет путем рассмотрения заголовков. Некоторые из этих свойств отражают HTTP-заголовки непосредственно (например, navigator.userAgent
установлен на значение поля HTTP User-Agent
заголовка). Путем сниффинга вокруг доступных свойств Вы могли бы быть в состоянии найти то, в чем Вы нуждаетесь, или некоторые подсказки для указания на то, что содержал ответ HTTP.
при управлении стороной сервера можно получить доступ к любому заголовку, который Вы любите, поскольку Вы создаете полный ответ. Значения могли быть переданы клиенту со страницей, спрятавшей в некоторой разметке или возможно во встроенной структуре JSON. Если бы Вы хотели иметь каждый заголовок Запроса HTTP в наличии для своего JavaScript, Вы могли бы выполнить итерации через них на сервере и передать их обратно как скрытые значения в разметке. Это, вероятно, не идеально для отправки, заголовок оценивает этот путь, но Вы могли, конечно, сделать это для определенного значения, в котором Вы нуждаетесь. Это решение возможно неэффективно также, но оно сделало бы задание при необходимости в нем.
Другой способ отправить информацию заголовка в JavaScript был бы через cookie. Сервер может извлечь любые данные, в которых он нуждается от заголовков запроса, и передайте их обратно в Set-Cookie
, заголовок ответа — и cookie может быть прочитан в JavaScript. Как keparo говорит, тем не менее, лучше делать это всего для одного или двух заголовков, а не для всех них.
Если мы говорим [приблизительно 111] Запрос заголовки, можно создать собственные заголовки при выполнении XmlHttpRequests.
var request = new XMLHttpRequest();
request.setRequestHeader("X-Requested-With", "XMLHttpRequest");
request.open("GET", path, true);
request.send(null);
Используя mootools, можно использовать this.xhr.getAllResponseHeaders ()
Используя XmlHttpRequest
можно потянуть текущую страницу и затем исследовать http заголовки ответа.
Лучший случай должен просто сделать HEAD
запрос и затем исследовать заголовки.
Для некоторых примеров выполнения этого взглянули на http://www.jibbering.com/2002/4/httprequest.html
Просто мои 2 цента.
Ссылка Allain Lalonde сделала мой день. Просто добавив некоторый упрощенный и модернизированный реальный HTML-код здесь.
Работы с любым разумным браузером включая IE9 и Presto-Opera 12.
<!DOCTYPE html>
<title>(XHR) Show all response headers</title>
<h1>All Response Headers with XHR</h1>
<script>
var X= new XMLHttpRequest();
X.open("HEAD", location);
X.send();
X.onload= function() {
document.body.appendChild(document.createElement("pre")).textContent=
X.getAllResponseHeaders();
}
</script>
Примечание: Вы получаете заголовки второго запроса, результат может отличаться от начального запроса.
<час> РЕДАКТИРОВАНИЕ: Иначе должен использовать современное
fetch()
API <!DOCTYPE html>
<title>fetch() all Response Headers</title>
<h1>All Response Headers with fetch()</h1>
<script>
var x= "";
if(window.fetch)
fetch(location, {method:'HEAD'}).then(function(r) {
r.headers.forEach(function(v,i) {x+= (i+ "\t\t"+ v+ "\n")});
}).then(function() {
document.body.appendChild(document.createElement("pre")).textContent= x;
})
</script>