c# – 使用Firefox无Access-Control-Allow-Origin,但适用于Chrom
我正在尝试启用CORS但是我的AngularJS Web应用程序发送的每个请求都经常出现同样的问题:
跨源请求被阻止:同源策略不允许在https://…/读取远程资源…(原因:缺少CORS头“Access-Control-Allow-Origin”). 它只发生在Firefox上!它与Chrome,Safari,IE和Edge完美配合. 环境: 我的API是托管在Azure App Services(IIS 8.0)上的.NET Web Api 2.3(.NET 4.6). 我的前端应用程序是一个AngularJS webapp,我通过https访问它,并通过https使用API??. 我做了什么: [assembly: OwinStartup(typeof(Startup))] namespace SentinelleApi { public class Startup { public void Configuration(IAppBuilder app) { app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll); app.Map("/signalr",map => { map.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll); var hubConfiguration = new HubConfiguration { EnableDetailedErrors = true,EnableJavaScriptProxies = false }; map.RunSignalR(hubConfiguration); }); HttpConfiguration config = new HttpConfiguration(); WebApiConfig.Register(config); app.UseWebApi(config); } } } 我有一个WebApiConfig类,声明如下: namespace SentinelleApi { public static class WebApiConfig { public static void Register(HttpConfiguration config) { // No need to declare config.EnableCors() here,the app.UseCors(...) does the job in startup section // Web API routes config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute( name: "DefaultApi",routeTemplate: "api/{controller}/{id}",defaults: new {id = RouteParameter.Optional} ); } } } 我没有触摸web.config手动添加标题(我试过,但它没有解决我的问题).无论如何,不??建议在web.config中添加这些头文件并同时拥有app.UseCors(). 所以,在Firefox上,我有CORS错误,但在Safari / Chrome上,没问题! 我有除了Firefox以外的Access-Control-Allow-Origins. 在Chrome上: 在Firefox上: 编辑: 我真的不明白发生了什么,但神奇的是,Access-Control-Allow-Origin出现在Firefox消耗的每条API路径上,而当它是安全连接(https)时则不然.我依赖来自Microsoft的https Azure证书,这似乎是有效的(锁定图标为绿色). 当然,我想保留https,但我不知道如何解决我的问题. 似乎与:Firefox CORS request giving ‘Cross-Origin Request Blocked’ despite headers有关 我已经针对Web应用程序客户端(主持AngularJS)制定了重写规则.在我的web.config中,我有: <rule name="RedirectToHTTPS" stopProcessing="true"> <match url="(.*)" /> <conditions> <add input="{HTTPS}" pattern="off" ignoreCase="true" /> <add input="{URL}" pattern="/$" negate="true" /> <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> </conditions> <action type="Redirect" url="https://{SERVER_NAME}/{R:1}" redirectType="SeeOther" /> </rule> 当我删除它时,它很好(我的Web应用程序可以使用HTTP访问),但是当我切换到HTTPS时,即使API服务器接受所有来源,它也会失败. 所以问题是:我应该添加一些特殊的东西来使HTTPS /证书与CORS一起使用(在Firefox下)吗? 还有关:https://stackoverflow.com/questions/33743645/iis-reverse-proxy-to-bypass-cors-issue 解决方法
我遇到了完全相同的问题,并且新版本的Firefox-45.0.0上似乎修复了这个错误.尝试更新并再次检查.我将向用户解释这个问题,并指导他们进行升级.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |