![](/img/trans.png)
[英]Angular 4 / Asp.net Web API - No 'Access-Control-Allow-Origin' header is present
[英]Angular.js - CORS - ASP.NET - Rest API - Origin not found in Access-Control-Allow-Origin header
当前在一个网页上运行,该网页调用了一个REST API,该API击中了我的SQL Server。 在VS2013中的本地主机上工作,但是当发布并添加到服务器时,我开始遇到CORS问题。 我已将以下代码添加到我的Web服务的web.config文件中,仍然没有运气:
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Methods" value="GET" />
<add name="Access-Control-Allow-Headers" value="Content-Type" />
</customHeaders>
</httpProtocol>
启用Cors后,我的webapiconfig.cs如下所示:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.EnableCors();
var json = config.Formatters.JsonFormatter;
json.SerializerSettings.PreserveReferencesHandling = Newtonsoft.Json.PreserveReferencesHandling.Objects;
json.SerializerSettings.ContractResolver = new
CamelCasePropertyNamesContractResolver();
config.Formatters.Remove(config.Formatters.XmlFormatter);
// Web API configuration and services
// 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 }
//);
}
}
我执行该调用的控制器文件也具有正确的CORS标头:
{
[EnableCors(origins: "*", headers: "*", methods: "*")]
public class RefurbItemsController : ApiController
{
// GET: api/RefurbItems
[Route("api/RefurbItems")]
public HttpResponseMessage Get()
{
var items = RefurbItems.GetAllItems();
HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK, items);
return response;
}
// GET: api/RefurbItems/5
public string Get(int id)
{
return "value";
}
// POST: api/RefurbItems
public void Post([FromBody]string value)
{
}
// PUT: api/RefurbItems/5
public void Put(int id, [FromBody]string value)
{
}
// DELETE: api/RefurbItems/5
public void Delete(int id)
{
}
}
它在我的开发机和服务器本身上都可以在本地正常运行,但是当我尝试将其部署到Web并查看页面时,我收到以下错误消息:在Access-Control-Allow-Origin标头中找不到Origin。 XMLHttpRequest:网络错误0x80070005,访问被拒绝。
如果有人可以提供一些想法或任何帮助,我可以尝试我是asp.net的新手
原来的问题是,我的EnableCors位于类和控制器的两个位置:
WebApiConfig.cs
config.EnableCors();
var json = config.Formatters.JsonFormatter;
json.SerializerSettings.PreserveReferencesHandling = Newtonsoft.Json.PreserveReferencesHandling.Objects;
json.SerializerSettings.ContractResolver = new
CamelCasePropertyNamesContractResolver();
config.Formatters.Remove(config.Formatters.XmlFormatter);
调节器
[EnableCors(origins: "*", headers: "*", methods: "*")]
我要做的就是删除位于WebApiConfig.cs中的config.EnableCors(),一切开始正常运行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.