从我的其他项目调用WebApi时,我收到此错误。
XMLHttpRequest cannot load http://localhost:64678/api/Employees/RetriveAllEmployees. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:49169' is therefore not allowed access. The response had HTTP status code 500.
我知道在WebApi项目中需要启用CORS。我已经在我的WebApi项目中添加了波纹管代码。
EnableCorsAttribute cors = new EnableCorsAttribute("*", "*", "*");
config.EnableCors(cors);
但是当我从其他项目调用WebApi时,我仍然遇到此错误。
我将webapi称为贝娄。
$("#getEmployees").on("click", function () {
$.ajax({
type: 'GET',
url: 'http://localhost:64678/api/Employees/RetriveAllEmployees',
success: function (data) {
debugger;
},
error: function (error) {
debugger;
}
});
});
无法理解什么是问题。
答案 0 :(得分:0)
您是否尝试添加到您的webconfig中?
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
</customHeaders>
</httpProtocol>
</system.webServer>
答案 1 :(得分:0)
你也可以尝试一下。
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="Content-Type" />
<add name="Access-Control-Allow-Methods" value="GET,POST,PUT,DELETE,OPTIONS" />
<add name="Access-Control-Allow-Credentials" value="true" />
</customHeaders>
</httpProtocol>
答案 2 :(得分:0)
我尝试了所有可以在网上找到的内容,包括此答案中给出的方法。在几乎一整天都试图解决问题之后,我发现了一种非常适合我的解决方案。
在文件夹App_Start中的WebApiConfig文件中,注释所有代码行并添加以下代码:
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
config.EnableCors();
var enableCorsAttribute = new EnableCorsAttribute("*",
"Origin, Content-Type, Accept",
"GET, PUT, POST, DELETE, OPTIONS");
config.EnableCors(enableCorsAttribute);
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
//routeTemplate: "api/{controller}/{id}",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Formatters.Add(new BrowserJsonFormatter());
}
public class BrowserJsonFormatter : JsonMediaTypeFormatter
{
public BrowserJsonFormatter()
{
this.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html"));
this.SerializerSettings.Formatting = Formatting.Indented;
}
public override void SetDefaultContentHeaders(Type type, HttpContentHeaders headers, MediaTypeHeaderValue mediaType)
{
base.SetDefaultContentHeaders(type, headers, mediaType);
headers.ContentType = new MediaTypeHeaderValue("application/json");
}
}