gpt4 book ai didi

asp.net-mvc - 使用OWIN身份验证的CORS在Web API中不起作用

转载 作者:行者123 更新时间:2023-12-03 13:05:45 24 4
gpt4 key购买 nike

在我的应用程序中,我将Web API与基于 token 的身份验证一起使用并具有CORS支持,但是当客户端请求 token 时,由于CORS导致发生错误(跨源请求被阻止:同一来源策略禁止读取(我的站点上的远程资源名称)。这可以通过将资源移至同一域或启用CORS来解决。)

我已经配置了CORS支持所需的一切(我认为是)。这是我的配置

欧文创业类

   public class Startup
{
public void Configuration(IAppBuilder app)
{


var config = new HttpConfiguration
{
DependencyResolver = new StructureMapWebApiDependencyResolver(container)

};


WebApiConfig.Register(config); // registering web api configuration
app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll); // cors for owin token pipeline
app.UseWebApi(config);
ConfigureOAuth(app);


}

public void ConfigureOAuth(IAppBuilder app)
{
var oAuthAuthorizationServerOptions = new OAuthAuthorizationServerOptions()
{

AllowInsecureHttp = true,
TokenEndpointPath = new PathString("/token"),
AccessTokenExpireTimeSpan = TimeSpan.FromDays(1),
Provider = new SimpleAuthorizationServerProvider()
};
// Token Generation
app.UseOAuthAuthorizationServer(oAuthAuthorizationServerOptions);
app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions());

}
}

和我的webapi配置
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.EnableCors(); // Corse support for Web api
config.MapHttpAttributeRoutes(); // attribute based urls

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

}
}

在web.config中配置
<system.webserver>
<httpProtocol>
<customHeaders>
<!-- Adding the following custom HttpHeader will help prevent CORS from stopping the Request-->
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Methods" value="GET, POST, OPTIONS, PUT, DELETE" />
</customHeaders>
</httpProtocol>
</system.webserver>

和来自mozilla的我的请求 header
Accept  application/json, text/plain, */*
Accept-Encoding gzip, deflate
Accept-Language en-US,en;q=0.5
Content-Length 67
Content-Type application/x-www-form-urlencoded; charset=UTF-8
Host talenterp
Origin http://192.168.1.11:85
Referer http://192.168.1.11:85/
User-Agent Mozilla/5.0 (Windows NT 6.3; WOW64; rv:30.0) Gecko/20100101 Firefox/30.0

应用的网址是

服务器应用程序(应支持CORS)
{http://talenterp}

token 终点:
{http://talenterp/token}

客户端应用
{http://talentmvc:85}

注意:我已经添加了
context.OwinContext.Response.Headers.Add("Access-Control-Allow-Origin", new[] { "*" });

在我的AuthorizationServerProvider的GrantResourceOwnerCredentials()方法中

最佳答案

确保只有

app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);



配置,并且 而不是也是Global.asax或WebApiConfig中的旧样式'config.EnableCors()'。此外: 将上面的语句作为owin Startup类中的第一个语句。是的,确实有所不同,稍后进行设置也可能导致cors无法正常工作。
public partial class Startup
{
public void Configuration(IAppBuilder app)
{
app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);

... etc

关于asp.net-mvc - 使用OWIN身份验证的CORS在Web API中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24989769/

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