XMLHttpRequest 错误 - Flutter Web 中的 CORS 问题(C#)
Posted
技术标签:
【中文标题】XMLHttpRequest 错误 - Flutter Web 中的 CORS 问题(C#)【英文标题】:XMLHttpRequest Error - CORS Issue in Flutter Web(C#) 【发布时间】:2021-08-22 19:14:49 【问题描述】:我在我的 c# web API 项目中启用了 CORS,如下所示:
尝试全局启用 CORS
public static class WebApiConfig
public static void Register(HttpConfiguration config)
var cors = new EnableCorsAttribute("*", "*", "*");
config.EnableCors(cors);
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/controller/id",
defaults: new id = RouteParameter.Optional
);
和 ApiController 级别
[EnableCors(origins:"*",headers:"*",methods:"*")]
public class MyAppController: ApiController
[AllowAnonymous]
[HttpGet]
public HttpResponseMessage TestApi()
颤动代码
final response =
await http.get(Uri.parse('http://localhost:44310/api/MyApp/TestApi'));
if (response.statusCode == 200)
// If the server did return a 200 OK response,
// then parse the JSON.
return response.body;
else
// If the server did not return a 200 OK response,
// then throw an exception.
throw Exception('Failed to load album');
但是,两者都不起作用,并且在 Flutter Web 中仍然出现 XMLHttpRequest 错误。
此外,在“网络”选项卡中,浏览器不会针对特定 API 请求显示任何内容。
它访问 API 并从 API 发送响应,但在 Flutter Web 中未收到响应。
参考从这里为 C# Web Api 项目属性启用 CORS:https://docs.microsoft.com/en-us/aspnet/web-api/overview/security/enabling-cross-origin-requests-in-web-api
我错过了什么吗?
【问题讨论】:
这能回答你的问题吗? How to support HTTP OPTIONS verb in ASP.NET MVC/WebAPI application 我不知道为什么提到的代码不起作用,因为对于 Web API,它应该像第三来源中提到的那样起作用。无论如何,将 IIS7 配置添加到 web.config 对我有用。 【参考方案1】:对于 IIS7 及更高版本:Source
只需将以下代码添加到您的 web.config。
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
</customHeaders>
</httpProtocol>
</system.webServer>
对于 IIS 6,请按照以下步骤操作:Source
-
打开 Internet 信息服务 (IIS) 管理器
右键单击要为其启用 CORS 的站点,然后转到“属性”
更改为 HTTP 标头选项卡
在自定义 HTTP 标头部分中,单击添加
输入 Access-Control-Allow-Origin 作为标题名称
输入 * 作为标题值
点击确定两次
在 ASP.NET 上的CORS:Source
如果您无权配置 IIS,您仍然可以通过 ASP.NET 添加标头,方法是将以下行添加到您的源页面:
Response.AppendHeader("Access-Control-Allow-Origin", "*");
其他平台请访问:Source。
【讨论】:
以上是关于XMLHttpRequest 错误 - Flutter Web 中的 CORS 问题(C#)的主要内容,如果未能解决你的问题,请参考以下文章
错误:使用天气 API 时出现 XMLHttpRequest 错误
如何检测 Chrome 应用程序中的 XMLHttpRequest 错误
为啥一些跨域 XMLHttpRequest 请求不返回 CORS 错误