我知道这不是一个很难解决的问题,但我在asp.net MVC web api中使用web api时遇到了问题。
我收到以下错误: “XMLHttpRequest无法加载http://192.168.1.71:800/api/IzoGlass/ToolLocationData。请求的资源上没有'Access-Control-Allow-Origin'标头。因此,”http://localhost:58469“原因不允许访问”。
我已经搜索并找到解决方案,但我的应用程序无法正常工作。
描述: - 当我在我的应用程序中使用来自同一域的web api时,它正常工作。
但每当我从其他域使用webapi时,它的投掷错误。如上所述。
答案 0 :(得分:6)
要启用CORS支持,请将Microsoft.AspNet.WebApi.Cors NuGet包添加到项目中。
<强>控制器强>
[EnableCors(origins: "http://example.com", headers: "*", methods: "*")]
public class TestController : ApiController
{
// Controller methods not shown...
}
将config.EnableCors();
代码添加到:
public static void Register(HttpConfiguration config)
{
// New code
config.EnableCors();
}
全局启用
public static void Register(HttpConfiguration config)
{
var corsAttr = new EnableCorsAttribute("http://example.com", "*", "*");
config.EnableCors(corsAttr);
}
答案 1 :(得分:2)
在Web API层中启用跨域请求
步骤01: 添加CORS NuGet包。在Visual Studio中,从“工具”菜单中选择“库软件包管理器”,然后选择“软件包管理器控制台”。在“程序包管理器控制台”窗口中,键入以下命令:
Install-Package Microsoft.AspNet.WebApi.Cors
步骤02: 打开文件App_Start / WebApiConfig.cs。将以下代码添加到WebApiConfig.Register方法。
using System.Web.Http;
namespace WebService
{
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// New code
config.EnableCors();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
}
步骤03。 接下来,将[EnableCors]属性添加到Controller类
using System.Net.Http;
using System.Web.Http;
using System.Web.Http.Cors;
namespace WebService.Controllers
{
[EnableCors(origins: "*", headers: "*", methods: "*")]
public class TestController : ApiController
{
// Controller methods not shown...
}
}
答案 2 :(得分:1)
将此添加到您的WebApiConfig
var cors = new EnableCorsAttribute("*", "*", "*");
config.EnableCors(cors);
答案 3 :(得分:0)
由于以下政策,您应将Access-Control-Allow-Origin: <origin> | *
添加到回复标题中。
出于安全原因,浏览器会限制从脚本中发起的跨源HTTP请求。例如,XMLHttpRequest遵循同源策略。因此,使用XMLHttpRequest的Web应用程序只能向其自己的域发出HTTP请求。为了改进Web应用程序,开发人员要求浏览器供应商允许XMLHttpRequest发出跨域请求。