有一个应用程序在角7也有一个. net web api解决方案,当我调用一个动作CORS问题发生,错误如下
CORS策略阻止从http://localhost:57467/UserDetails/GetUserDetailshttp://localhost:4200访问XMLHttpRequest:对预试请求的响应不通过权限改造检查:请求的资源上不存在访问控制允许起源标头。
我试图使用Web api中的System.Web.Http.CORS添加CORS修复程序,但仍然出现错误。提前感谢。请帮助我解决此问题
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
EnableCorsAttribute cors = new EnableCorsAttribute("*", "*", "*");
config.EnableCors(cors);
// Web API configuration and services http://localhost:80/DemoApp/WebForm1.aspx
// Configure Web API to use only bearer token authentication.
config.SuppressDefaultHostAuthentication();
config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
global.asax.cs
protected void Application_BeginRequest()
{
string[] allowedOrigin = new string[] { "http://localhost:4200", "http://localhost:2052" };
var origin = HttpContext.Current.Request.Headers["Origin"];
if (origin != null && allowedOrigin.Contains(origin))
{
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", origin);
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Methods", "GET,POST");
}
}
来自angular的api调用
let headers = new HttpHeaders({ 'Content-Type': 'application/json', 'Access-Control-Allow-Origin': '*' });
let options = { headers: headers, crossDomain: true, withCredentials: true };
return this._http.get(path, options)
.pipe(map(res => {
return JSON.parse(res.toString());
}),
catchError(this.handleError)
);
我认为Application\u BeginRequest
方法中的if
子句阻止将“Access Control Allow Origin”头添加到响应中。
您应该尝试不使用if
子句,只需将allowedOrigin
值添加到Access Control Allow Origin
。因此,应用程序\u BeginRequest()
的外观如下:
protected void Application_BeginRequest()
{
string[] allowedOrigin = new string[] { "http://localhost:4200", "http://localhost:2052" };
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", allowedOrigin);
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Methods", "GET,POST");
}
请求标头如下所示: 临时头显示为access-control-request-headers:content-type access-control-request-method:POST origin:http://localhost:4200 referer:http://localhost:4200/login user-agent:mozilla/5.0(Macintosh;Intel M
交叉起源没有发生,被CORS策略阻止。 我使用的是Windows系统。 在文件中: 在文件中: 我在浏览器控制台中遇到此错误: CORS策略阻止了从http://localhost:1111/api/v1/employees/createhttp://localhost:4200对XMLHttpRequest的访问:对预飞行请求的响应没有通过权限改造检查:请求的资源上没有访问控制允许起源标头。<-
当我使用HTML2Canvas评估图像时,我得到了这个错误。 CORS策略阻止从来源“http://localhost:8080”访问位于“http://testdomain.com/storage/images/products/user_front.png”的映像:请求的资源上没有“Access-Control-Allow-Origin”标头。 下面是我的cors配置。 有人能帮我吗?
我试图用角和Spring做简单的CRUD。我在spring boot应用程序中实现了JWT身份验证。之后,每当我进行插入操作时,它都工作得很好,但每当我试图编辑和删除它时,给出'origin'http://localhost:4200'就被CORS策略‘错误阻止了。为什么我会得到这个错误我在安全配置中添加了'CorsFilter'bean,但它仍然会给我同样的错误。在添加JWT Athentica
我有一个。NET核心应用程序,它有一个REST API被一个角客户机使用,但遇到了CORS问题。 但仍在客户端(运行在本地端口4200上)中获取错误: CORS策略阻止从来源“HTTP://localhost:4200”访问位于“HTTP://localhost/myapi/api/table”的XMLHttpRequest:对飞行前请求的响应没有通过访问控制检查:它没有HTTP ok状态。