我有一个 AspNet5 beta8 网站 mydomain.com:80 和在 mydomain.com:81 上运行的 api。只有端口不同。我确实配置了 Cors,它在 IE11 和 Chrome 中运行良好。不幸的是,我无法让它在 Firefox 42 版中运行。
不同之处在于 Firefox 在预检请求期间请求的内容类型:
Firefox: OPTIONS 204 No Content, Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
api 在 OPTIONS 响应中用 json 回复。紧随其后的是
GET 404 Not found. XML Parsing Error: no element found Location: moz-nullprincipal:{15a3ffbb-ab25-4adc-a332-fe52135c1fa6} Line Number 1, Column 1:
我假设是因为 Firefox 得到了 json 而不是 XML 并且生气了。
Chrome 和 IE11 都可以正常工作,因为它们在预检请求期间接受任何内容类型:
OPTIONS 204 No Content, Accept */* followed by GET results in status 200 OK.
因为 AspNet5 默认不包含 XML 序列化器/格式化器,
我试图像这样将它添加到api中:
services.AddMvc().AddXmlDataContractSerializerFormatters();
不幸的是,这不会导致 xml 响应来自 Firefox 的预检请求。Api 始终发送 json。我还尝试设置以下内容:
services.Configure<MvcOptions>(
options =>
{
options.RespectBrowserAcceptHeader = true;
});
也没有运气......
如何强制 api 使用 xml 回复来自 Firefox 的预检请求或强制 Firefox 以编程方式在 OPTIONS 请求中请求 json(我在客户端使用 Angular)?