asp.net-mvc – CORS在使用OWIN认证的web api中不起作用
|
在我的应用程序中,我正在使用基于令牌的身份验证和基于CORS支持的web api,但是当客户端请求令牌时,由于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 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 应用程序的URL是 服务器应用程序(应支持CORS) {http://talenterp}
令牌终点: {http://talenterp/token}
客户端应用 {http://talentmvc:85}
注意:我已经添加 context.OwinContext.Response.Headers.Add("Access-Control-Allow-Origin",new[] { "*" });
在我的AuthorizationServerProvider的GrantResourceOwnerCredentials()方法中 解决方法确保你只有
配置,而不是您的Global.asax或WebApiConfig中的旧样式“config.EnableCors()”.此外:将上述语句作为第一个语句放在您的owin启动类中.是的,真的有所作为,稍后再设置也可能导致cors不起作用. public partial class Startup
{
public void Configuration(IAppBuilder app)
{
app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);
... etc (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 如何在页面加载后从代码设置ASP.NET标签文本?
- .net – 如何使用SmtpClient.SendAsync发送带有附件的电子邮
- asp.net-mvc – ASP.Net [HiddenInput]数据属性在Razor中用
- asp.net – 联合身份验证和“加密操作期间发生错误”
- .net – 设置可用于AppFabric缓存的内存量
- asp.net – 页面加载在Firefox上触发两次
- asp.net-mvc-3 – 使用EditorFor/TextBoxFor/TextBox助手的
- 使用ASP.NET MVC捆绑和缩小模块化JavaScript(RequireJS/AMD
- ASP.NET Core 2.1身份:如何删除默认UI剃刀页面?
- ASP.NET Web应用程序(MVC)部署自动化和Subversion
- 什么是ASP.Net相当于PHP的回声?
- asp.net – 我可以同时拥有Controller和ApiContr
- .net – 设置页面标题不起作用
- asp.net – 表单身份验证web.config设置
- asp.net-mvc – DropDownList设置在asp.net MVC中
- asp.net-mvc – 我想使用web.config中的规则在lo
- asp.net – ASP:登录总是生成一个,我怎么能让它
- asp.net-ajax – 如何在ASP.NET AJAX中实现文件下
- asp.net-mvc-3 – ViewBag.Title错误
- asp.net-mvc – ASP.NET MVC不调用global.asax’
