![](/img/trans.png)
[英]No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://www.sitename.com,' is therefore not allowed access
[英]Angular2: http.get returns “No 'Access-Control-Allow-Origin' header is present on the requested resource.”
我收到以下错误:
对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。
从我的angular2应用程序向我的web api发出以下请求时:
return this.http.get("http://localhost/api/test", { headers })
.map(res => this.extractData(res))
.catch(this.handleError);
一些考虑:
app.UseCors(CorsOptions.AllowAll);
是在startup.cs的配置方法的开头 以下内容包含在web.config文件中:
<system.webServer>
<handlers>
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<remove name="OPTIONSVerbHandler" />
<remove name="TRACEVerbHandler" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionControllerv4.0" />
</handlers>
谢谢!
我认为问题是您没有在服务器端配置预检请求(对于OPTIONS方法)。
CORS有两种请求:
添加标题时,您可以从简单请求切换到预检请求。 因此,OPTIONS请求在目标请求之前在引擎盖下执行。
有关详细信息,请参阅此文章:
将这些行添加到webapiconfig.cs
文件中
var cors = new EnableCorsAttribute("", "", "*");
config.EnableCors(cors);
您可以在ApplicationOAuthProvider.cs
再做一件事。在GrantResourceOwnerCredentials
方法中添加此行
context.OwinContext.Response.Headers.Add("Access-Control-Allow-Origin", new[] { "*" });
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.