gpt4 book ai didi

asp.net-web-api - Cors 在 web api 2.0 中不起作用

转载 作者:行者123 更新时间:2023-12-04 20:02:27 26 4
gpt4 key购买 nike

我非常努力地在 web api 项目中理解和启用 CORS。我遇到了一个阻塞点。我从一个带有 ASP.NET 标识的 ASP.NET MVC Web Api 2 项目开始。无论我做什么似乎都不起作用。

我已经删除了我的 global.asx文件,我的启动看起来像这样:

public partial class Startup
{
public void Configuration(IAppBuilder app)
{
HttpConfiguration configuration = new HttpConfiguration();
// I'm not sure it this is the proper way to use webapiconfig
WebApiConfig.Register(configuration);
app.UseWebApi(configuration);
app.UseCors(CorsOptions.AllowAll);
ConfigureAuth(app);
}
}

和 WebApiConfig.Register 代码是:
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Configure Web API to use only bearer token authentication.
config.SuppressDefaultHostAuthentication();
config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));
config.AddODataQueryFilter();

// Web API routes
config.MapHttpAttributeRoutes();

config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);

var jsonFormatter = config.Formatters.OfType<JsonMediaTypeFormatter>().First();
jsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
RegisterModels(); //Automapper here
}

我安装了 mc aspnet cors 和 microsoft owin 主机系统 web。
“[assembly: OwinStartup(typeof(MyProject.Startup))]”已就位,并在 web.config 中我有:
<appSettings>
<add key="owin:AutomaticAppStartup" value="true" />
</appSettings>

我只调用 app.UseCors(CorsOptions.AllowAll) 来启用 CORS,没有其他方式像 config.enableCors或其他任何东西,但是每当我尝试获取 token 或 API 中的任何内容时,都会收到错误消息:

Reason: CORS header ‘Access-Control-Allow-Origin’ missing.



我试过在 Configuration 中放置一个断点方法,但它没有被调用......永远。我正在使用 IIS Express 进行调试。

最佳答案

没有什么对我有用..经过多次尝试,我终于设法使某些东西起作用了。

如果你有同样的问题..

1) 从安装的 nugget 软件包中删除与 cors 相关的任何内容.. 一切。

2) 从 web.config 中删除与 cors 相关的任何内容。

3) 在 Gloabal.asax

protected void Application_BeginRequest(object sender, EventArgs e)
{
var context = HttpContext.Current;
var response = context.Response;

response.AddHeader("Access-Control-Allow-Origin", "*");
response.AddHeader("X-Frame-Options", "ALLOW-FROM *");

if (context.Request.HttpMethod == "OPTIONS")
{
response.AddHeader("Access-Control-Allow-Methods", "GET, POST, DELETE, PATCH, PUT");
response.AddHeader("Access-Control-Allow-Headers", "Content-Type, Accept");
response.AddHeader("Access-Control-Max-Age", "1000000");
response.End();
}
}

这适用于/api 和/token。
这是一个通用的解决方案,请在将其部署到产品之前注意。

希望能帮到遇到同样问题的人。

关于asp.net-web-api - Cors 在 web api 2.0 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40104158/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com