asp.net-mvc - 使用 CORS 在 WebAPI 中将文本/纯文本作为复杂对象发布

标签 asp.net-mvc asp.net-web-api cors

因此,我希望使用 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/

相关文章:

javascript - 在 Chart.js MVC c# 中使用模型中的数据

c# - 如何在 asp.Net MVC 中开始使用 Telerik

angular - 尝试从 4chan API 获取

php - jQuery - 无访问控制允许来源

google-chrome - 为什么在使用CORS时Chrome有时只记录飞行前请求(而不记录实际的GET)?

c# - 标准网络服务 (asmx) 是否与 MVC 一起工作?

C# :Unity container and ILogger

c# - 与 AngularJS/.NET Web API 应用程序串联的 RabbitMQ 架构

c# - ASP.NET Web API 帮助页面无法处理通用类型 Controller

c# - 从 MVC 的 DependencyResolver 过渡到 AutofacWebApiDependencyResolver - .Current 在哪里?