Не может правильно установить Принять HTTP-заголовок с jQuery

Неявный , когда Вы определяете свой интерфейс через участника на Вашем классе. Явный , когда Вы определяете методы в своем классе в интерфейсе. Я знаю, что сбивающие с толку звуки, но вот - то, что я имею в виду: IList.CopyTo был бы неявно реализован как:

public void CopyTo(Array array, int index)
{
    throw new NotImplementedException();
}

и явно как:

void ICollection.CopyTo(Array array, int index)
{
    throw new NotImplementedException();
}

различие, являющееся, который неявно доступен через Ваш класс, который Вы создали, когда это снято как тот класс, а также когда его бросок как интерфейс. Явная реализация позволяет ему только быть доступным, когда брошено как сам интерфейс.

MyClass myClass = new MyClass(); // Declared as concrete class
myclass.CopyTo //invalid with explicit
((IList)myClass).CopyTo //valid with explicit.

я использую явный, прежде всего, для содержания реализации в чистоте, или когда мне нужны две реализации. Но независимо я редко использую его.

я уверен, что существует больше причин использовать его, используют его, что другие отправят.

Посмотрите следующее сообщение в этом потоке для превосходного обоснования позади каждого.

73
задан gnarf 19 July 2011 в 22:15
поделиться

3 ответа

Похоже, ваша проблема описана здесь: http://www.grauw.nl/blog/entry/470 . Проблема в том, что в спецификации XMLHttpRequest в настоящее время указано, что пользовательские агенты не должны устанавливать какие-либо заголовки Accept по умолчанию для запроса, поэтому req.setRequestHeader () может просто добавлять новые Accepts. К сожалению, браузеры этого еще не придерживаются. Описание проблемы позволяет вам протестировать ваш браузер, чтобы убедиться, что он работает должным образом, и, к сожалению, IE7, Chrome, Safari, Firefox и Opera не работают.

Лоренс Грау также рассказывает о последствиях первой попытки обнулить заголовок Accept с помощью

setRequestHeader('Accept', '')

или

setRequestHeader('Accept', null)

Здесь могут помочь.

Уродливые взломы на стороне сервера: если у вас есть контроль над серверным приложением, вы можете жестко настроить его так, чтобы он всегда возвращал XML, добавьте поддержку настраиваемого типа мультимедиа, например "

8
ответ дан 24 November 2019 в 12:22
поделиться

Я думаю, что исходный плакат мог иметь отношение к этой ссылке: http://blogs.msdn.com/ieinternals/archive/2009/07/ 01 / IE-and-the-Accept-Header.aspx , однако, это не объясняет наблюдаемого поведения.

IE сам по себе не имеет описанного вами поведения, и установка заголовка Accept через XMLHTTPRequest должна работать правильно. Я протестировал IE8 для подтверждения.

Возможно, в вашей версии jQuery есть проблема или у вас есть какой-то плагин, который искажает ваш трафик?

2
ответ дан 24 November 2019 в 12:22
поделиться

Я не верю, что IE (любая версия) хорошо работает с заголовком Accept. См. Эту ссылку: [ http://blogs.msdn.com/ieinternals/archive/2009/07/01/IE-and-the-Accept-Header.aspx]

Возможным решением может быть проверка Пользовательский агент, чтобы узнать, является ли это IE. Если да, то проверьте наличие text / xml.

Удачи!

Редактировать:

Оппс по ссылке. Я догадывался, что IE всегда добавляет / , а установка заголовка accept просто добавляет желаемый тип mime после / .

0
ответ дан 24 November 2019 в 12:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: