Заголовок Silverlight WebClient Accept перезаписывается в Firefox 3 - PullRequest
3 голосов
/ 04 августа 2010

У меня есть приложение Silverlight, которое взаимодействует с веб-службой REST с помощью класса WebClient. Он отлично работает в IE 8 и Chrome 5, но вызов веб-службы завершается неудачно в Firefox 3.

Я сузил проблему: Firefox 3 меняет заголовок Accept моего HTTP-запроса. вот мой упрощенный код:

// Use the ClientHttp stack.
WebRequest.RegisterPrefix("http://", WebRequestCreator.ClientHttp);

// Call the web service.
var webClient = new WebClient();
webClient.Headers["Accept"] = "application/json";
webClient.DownloadStringAsync(someUrl);

Используя Fiddler для исследования данных о каналах, заголовок запроса заменяется:

GET /1/36497f32-1acd-4f4e-a946-622b3f20dfa5/Content/GetAllTextContentsForUser/0 HTTP/1.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Host: localhost:88
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8

Обратите внимание на 2-ую строку «Принять» - она ​​заменена на text / html, xml и другие форматы. Не то, что я ищу - мне совершенно необходимо, чтобы JSON вернулся.

Есть ли способ запретить Firefox изменять мой заголовок Accept?

1 Ответ

1 голос
/ 10 августа 2010

Оказывается, заголовок Accept перезаписывается во всех браузерах. IE и Chrome перезаписывают заголовок Accept значением "* / *" (звездная косая черта). Firefox перезаписывает его каким-то странным значением, которое, помимо прочего, определяет XML.

Ответом на эту проблему является то, что вы не можете ожидать сохранения заголовка Accept. Браузер перезапишет заголовок Accept, даже если вы используете ClientHttp.

...