ASP.NET Web API中的跨源请求

问题描述 投票:1回答:2

我在我的mvc应用程序中有一个api控制器,我试图将数据发布到api,但我在ASP.NET Web API中遇到了跨源请求的问题。这是我的错误

XMLHttpRequest无法加载http://192.168.0.44:100/api/name。对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,'http://localhost:53114'原产地不允许进入。响应具有HTTP状态代码405。

我在ASP.NET Web API 2中安装了跨源请求

我的api代码

namespace Restaurant.Controllers{
[EnableCors(origins: "http://192.168.0.44:100", headers: "*", methods: "get,post")]

    public class OrderController : ApiController  
    {
        public Test Post( string name,int age)  
        {
            Test test = new Test()
            {
               Name=name,
               Age=age
            };
            db.test.Add(test);
            db.SaveChanges();
            return test;
        }}

WebApiConfig

public static void Register(HttpConfiguration config)
{
    config.EnableCors();
    config.Routes.MapHttpRoute(
        name: "DefaultApi",
        routeTemplate: "api/{controller}/{id}",
        defaults: new { id = RouteParameter.Optional });         
    config.Formatters.Add(new BrowserJsonFormatter());                       
}

视图

 <script type ="text/javascript">
 function add() {      
        var DatatTest = {
        name: $("#txtname").val(),
        age: $("#txtage").val()
    };
    $.ajax({            
        url: 'http://192.168.0.44:100/api/name',
        type: 'Post',
        data: JSON.stringify(DatatTest),
        contentType: "application/json; charset=utf-8",
        success: function (data) {
            alert("ok");},
        error: function (x, y, z) {
            alert("error");}
    });
}
</script>

web.config中

httpProtocol>
  <customHeaders>               
    <add name="Access-Control-Allow-Headers" value="Content-Type" />
    <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
  </customHeaders>
</httpProtocol>

现在我收到了这个错误

XMLHttpRequest无法加载http://192.168.0.44:100/api/Order。对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,'http://localhost:53114'原产地不允许进入。响应的HTTP状态代码为500。

哪里是我的错?

post asp.net-web-api cors
2个回答
1
投票

请尝试以下步骤。

在web.config中

config.EnableCors();

在你的控制器中添加它

 [EnableCors(origins: "http://mywebclient.azurewebsites.net", headers: "*", methods: "*")]

注意:origin应该是客户端地址,而不是服务器地址,并确保不要在origin URL的末尾添加黑色斜杠。


2
投票

这是在调用Web API时显示的错误。它背后有两个原因。

  1. HEARTS

我们可以在webapiconfig.cs文件中启用CORS

CONFIG.EnableCors(cors);

要解决标题,我们应该允许WEB API允许所有标题如下所示

 EnableCorsAttribute cors = new EnableCorsAttribute("*", "*", "*");

Reference Article

© www.soinside.com 2019 - 2024. All rights reserved.