使用 CORS 在 WebAPI 中将 text/plain 作为复杂对象发布

     2023-03-04     138

关键词:

【中文标题】使用 CORS 在 WebAPI 中将 text/plain 作为复杂对象发布【英文标题】:Posting text/plain as a complex object in WebAPI with CORS 【发布时间】:2013-03-15 07:21:19 【问题描述】:

所以我希望使用 CORS 从 AJAX 帖子中将复杂对象 POST(或 PUT)到服务器。不幸的是,IE8 只支持在使用 CORS 时发送 text/plain 而不是application/json

有没有办法在WebAPI 中实现一个处理程序来自定义解析文本/纯文本提交。

我的意思是复杂的对象

public void POST([FromBody] MyCustomObject myResponse)

   return null;

通常我会在一些带有适当设置的标头的 JSON 中发布,但是由于 IE8 的限制,一旦您设置标头,它就会失败并拒绝访问,所以需要是文本/纯文本,所以我打算做的是发送一个 JSON 字符串,但称为 text/plain(我知道很难看!)但是因为没有更好的选择......

【问题讨论】:

【参考方案1】:

如果您的 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 格式化程序接受纯文本内容类型,并删除 form 和 xml 格式化程序(尽管可能不需要删除它们)

【讨论】:

谢谢。这对我有用,我用它来防止在 POST、DELETE 和 PUT 时进行预检。【参考方案2】:

很难看,但您可以尝试在消息处理程序中将内容类型标头从 text/plain 修改为 application/json,以便使用 json 格式化程序正确进行参数绑定。

【讨论】:

在 Angular 中使用 MSAL 和在 WebAPI 中使用 JWT Auth 时 API 请求触发 CORS 错误

】在Angular中使用MSAL和在WebAPI中使用JWTAuth时API请求触发CORS错误【英文标题】:APIrequesttriggeringCORSerrorwhenusingMSALinAngularandJWTAuthinWebAPI【发布时间】:2020-10-2121:08:01【问题描述】:我有一个Angular9应用程序,我在其中启用了MSAL,并... 查看详情

Webapi CORS 不能与微风js/Odata V4 一起使用

】WebapiCORS不能与微风js/OdataV4一起使用【英文标题】:WebapiCORSnotworkingwithbreezejs/OdataV4【发布时间】:2015-01-2819:05:39【问题描述】:我正在尝试在我的webapi上启用CORS,以便我可以从另一个项目中使用它使用轻风js。在我的webapi中,... 查看详情

无法让 CORS 与 Web API 2 一起使用

】无法让CORS与WebAPI2一起使用【英文标题】:TroublegettingCORSworkingwithWebAPI2【发布时间】:2016-01-0606:12:22【问题描述】:让Cors使用WebApi让我很开心。我刚刚使用VisualStudio2015附带的默认模板创建了WebApi。我所做的唯一更改是:Install-... 查看详情

在 OWIN 中将 CORS 添加到 UseFileServer

...】:我一直在尝试将“Access-Control-Allow-Origin”标头添加到使用自托管Owin应用程序提供的文件中到目前为止,这是我的创业课程publicclassStartuppublicvoidConfiguration(IAppBuild 查看详情

IIS 中托管的 WebAPI 中的 CORS 问题

...问题描述】:我正在尝试实现一个应用程序,该应用程序使用与TaiseerJoudeh在reallyawesomeexample中演示的相同的基于令牌的身份验证机制。在我的应用程序中,我一直遇到Cors问题。在某些配置中,我会在POST的预检(OPTIONS)请求中收到5 查看详情

CORS 多个标头

...用控制器方法时,出现以下错误:SEC7128:CORS响应不允许使用多个Access-Control-Allow-Origin标头。为了在我的webapi上启用CORS,我在WebApi. 查看详情

在 ASP.Net Core 5 WebAPI 中启用 CORS

...StartupProduction和StartupDevelopment,如下所示。另外,我正在使用ASP.NetCore5,基于documentation,我 查看详情

如何在我的 ASP.NET 核心 WebApi 项目中全局启用 CORS

...的WebApi2迁移到ASP.NET核心Webapi项目。在我的项目中,我们使用的是EnableCors功能。我在Microsoft网站上找到了这份文档,我将其用作参考-https: 查看详情

如何在 ASP.net Core WebAPI 中启用 CORS

...killerrin/Portfolio-Backend)。我还有一个客户网站,我想让它使用该API。客户端 查看详情

在 .net 核心 webAPI 中启用 CORS

】在.net核心webAPI中启用CORS【英文标题】:enablingCORSin.netcorewebAPI【发布时间】:2019-07-1605:44:49【问题描述】:我已经安装了NuGet包Microsoft.AspNetCore.Cors2.2.0然后在我的.net核心webAPIStartup.cs中,我完成了以下操作:publicvoidConfigureService... 查看详情

在 Angular 6 中将 CORS 标头添加到响应中

...要的所有数据做出正确的响应,但问题是当它以典型方式使用时,例如在“普通”浏览器中,我收到了CORS错误-标题丢失 查看详情

WebAPI CORS 和 Ninject

...读了一些地方,当api拒绝跨源调用时,这是原因。所以我使用包管理器控制台并安装了Microsoft.AspNet.WebApi.Co 查看详情

.Net Core WebAPI CORS 与 Windows 身份验证

...题描述】:我有一个.NetCoreWebAPI服务,我为它启用了CORS(使用下面的代码),在项目的属性中我禁用了匿名身份验证并启用了Windows身份验证。POST和PUT端点在启用匿名身份验证的情况下工作,但在禁用时会失 查看详情

MVC6 Cors - 拦截预检

...WebApi中,我可以拦截每个HTTP请求,如果是预检,我可以使用浏览器接受的标头进行响应。我试图弄清楚如何在MVC6WebApi中做同样的事情。这是WebApi代码。protectedvoidApplication_BeginRe 查看详情

WebApi 2.2 + Chrome = CORS 405 错误

...】:2014-10-2705:54:41【问题描述】:我有2个项目设置:仅使用HTML和durandal并使用$.ajax调用webapipost方法的网站。它位于localhost:33432并调用第二个站点(请注意,ajax调用没有任何特殊之处,除了Durandal添加的任何内容,并且使用的是... 查看详情

使用 WebAPI PUT / POST 请求启用 CORS?

】使用WebAPIPUT/POST请求启用CORS?【英文标题】:EnablingCORSwithWebAPIPUT/POSTrequests?【发布时间】:2013-07-0403:15:32【问题描述】:我已经尝试过关注这篇文章,但我仍然没有完成:CORSsupportforPUTandDELETEwithASP.NETWebAPI在我的web.config中,我... 查看详情

如何在 Asp.Net Core 3.0 WebAPI 中启用 CORS

】如何在Asp.NetCore3.0WebAPI中启用CORS【英文标题】:HowtoenableCORSinAsp.NetCore3.0WebAPI【发布时间】:2020-09-0721:49:39【问题描述】:我想通过Asp.NetCore3.0API项目启用CORS。这是生成的基本Asp.NetCoreApi模板。模板中的所有内容都是默认设置,... 查看详情

在 WebAPI 上启用 CORS 在 Postman 中似乎不起作用

】在WebAPI上启用CORS在Postman中似乎不起作用【英文标题】:EnableCORSonWebAPIappearsnotworkingfromPostman【发布时间】:2017-03-0301:26:38【问题描述】:我正在尝试为特定域启用CORS。我已经按照他们所说的一切在这里:https://www.asp.net/web-api/o... 查看详情