所以我希望使用CORS从AJAX帖子向服务器POST(或PUT)一个复杂的对象。不幸的是,IE8仅支持在使用CORS而不是application/json
时发送text / plain。
有没有办法在WebAPI
中实现自定义解析文本/普通提交的处理程序。
复杂的对象我的意思是
public void POST([FromBody] MyCustomObject myResponse)
{
return null;
}
通常情况下,我会发布一些JSON并设置适当的标头,但是由于IE8限制,一旦设置了标头,它就会失败并且访问被拒绝所以需要是text / plain所以我打算做的就是发送一个JSON字符串,但称为text / plain(丑陋,我知道!),但缺乏更好的选择......
答案 0 :(得分:9)
如果您的WebApi应用程序确实只使用JSON,那么您可以使用此解决方案,它始终以JSON响应并忽略请求内容类型:
How can I force asp.net webapi to always decode POST data as JSON
由此,我建议这个解决方案:
此代码需要添加到Application_Start或WebApiConfig.Register
config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/plain"));
config.Formatters.Remove(config.Formatters.FormUrlEncodedFormatter);
config.Formatters.Remove(config.Formatters.XmlFormatter);
它告诉json格式化程序接受纯文本内容类型,并删除表单和xml格式化程序(尽管可能不需要删除它们)
答案 1 :(得分:2)