因此,我希望使用 CORS 从 AJAX 帖子中将复杂对象 POST(或 PUT)到服务器。不幸的是,IE8 仅支持使用 CORS 时发送文本/纯文本,而不支持 application/json
。
有没有办法在 WebAPI
中实现处理程序来自定义解析文本/纯文本提交。
我所说的复杂对象是指
public void POST([FromBody] MyCustomObject myResponse)
{
return null;
}
通常我会在一些 JSON 中发布,并适当设置 header ,但由于 IE8 的限制,一旦设置 header ,它就会因访问被拒绝而失败,因此需要是文本/纯文本,所以我计划做的是发送一个 JSON 字符串,但称为 text/plain (我知道很难看!),但由于缺乏更好的选择...
最佳答案
如果您的 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 格式化程序(尽管可能不需要删除它们)
关于asp.net-mvc - 使用 CORS 在 WebAPI 中将文本/纯文本作为复杂对象发布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15621112/