我有一个Silverlight应用程序,它使用WebClient类与restweb服务通信。它在ie8和chrome5中运行良好,但在firefox3中web服务调用失败。
我已经缩小了问题的范围:firefox3正在更改HTTP请求的Accept头。下面是我的简化代码:
// 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
注意第二行“Accept”--它被text/html、xml和其他格式所取代。不是我想要的——我绝对需要JSON回来。
有没有办法阻止Firefox修改我的Accept头?