Post ASP.NET Web API中的跨源请求

Post ASP.NET Web API中的跨源请求,post,asp.net-web-api,cors,Post,Asp.net Web Api,Cors,我的mvc应用程序中有一个api控制器,我试图将数据发布到api,但我遇到了ASP.NET Web api中跨源请求的问题。这是我的错误 无法加载XMLHttpRequest。对飞行前请求的响应未通过访问控制检查:请求的资源上不存在“访问控制允许来源”标头。因此,不允许访问源“”。响应的HTTP状态代码为405 我已在ASP.NET Web API 2中安装了跨源请求 我的api代码 namespace Restaurant.Controllers{ [EnableCors(origins: "

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

无法加载XMLHttpRequest。对飞行前请求的响应未通过访问控制检查:请求的资源上不存在“访问控制允许来源”标头。因此,不允许访问源“”。响应的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());                       
}
看法


函数add(){
var DatatTest={
名称:$(“#txtname”).val(),
年龄:$(“#txtage”).val()
};
$.ajax({
网址:'http://192.168.0.44:100/api/name',
键入:“Post”,
数据:JSON.stringify(DatatTest),
contentType:“应用程序/json;字符集=utf-8”,
成功:功能(数据){
警报(“确定”);},
错误:函数(x,y,z){
警报(“错误”);}
});
}
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>
config.EnableCors();
httprotocol>
. 对飞行前请求的响应未通过访问控制检查:请求的资源上不存在“访问控制允许来源”标头。因此,不允许访问源“”。响应的HTTP状态代码为500


我的错误在哪里?

尝试以下步骤

在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>
config.EnableCors();
在控制器中添加以下内容

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

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

尝试以下步骤

在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>
config.EnableCors();
在控制器中添加以下内容

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

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

调用web API时显示错误。背后有两个原因

  • 科尔斯
  • 标题
  • 我们可以在webapiconfig.cs文件中启用CORS

    CONFIG.EnableCors(cors);
    
    要解析标题,我们应该允许WEBAPI允许所有标题,如下所示

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

    调用web API时显示的错误。背后有两个原因

  • 科尔斯
  • 标题
  • 我们可以在webapiconfig.cs文件中启用CORS

    CONFIG.EnableCors(cors);
    
    要解析标题,我们应该允许WEBAPI允许所有标题,如下所示

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

    我希望我已经这样做了。我可以使用IP作为源代码吗?我希望我已经这样做了。我可以使用IP作为源代码吗?