2015-11-19 23 views
0

首先我知道很多问题都被问到了这个问题,但我真的试图找出问题所在,但没有什么帮助我。 我正在使用C#,ASP.NET,Javascript,AJAX并尝试使用API​​来获取一些信息,但每次都会出现此错误。当我尝试使用不同的API时,完美无缺。 API状态处于活动状态,但响应每次都失败。没有'Access-Control-Allow-Origin'标题出现在请求的资源上

误差看起来像: 1

我添加的权限配置文件:

<customHeaders> 
    <add name="Access-Control-Allow-Origin" value="*" /> 
    <add name="Access-Control-Allow-Headers" value="Origin, X-Requested-With, Content-Type, Accept" /> 
    <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" /> 
    </customHeaders> 

但这并没有帮助我。我现在应该怎么做?我试了几个小时,结果也一样。

尝试在ajax调用中添加jsonp和crossDomain,但这对我也没有帮助。

$.ajax({ 
     headers: { 
      'Accept': 'application/json', 
      'Content-Type': 'application/json' 
     }, 

     crossDomain : true, 
     dataType: 'jsonp', 
     url: url + id, 
     type: 'GET', 
     contentType: 'application/json;', 
     success: function (valid) { 
      if (valid) { 
      } else { 
      } 
     } 
    }); 
} 

谢谢大家的每一个答案。

问候

+0

CORS设置和响应类型取决于API - 如果它不支持第三种第三方请求或JSONP没有什么可以做的。 –

+0

但是当我打开错误的链接,我得到这样的东西:http://imgur.com/IbGASq1,所以我认为这种反应很好..: -/ – Katz

+0

这是由于[同源策略](http: //en.wikipedia.org/wiki/Same-origin_policy)。该请求将被发送,并且浏览器将接收到数据,但因为域不匹配,数据将被阻止通过JavaScript进行访问。这就是为什么你可以看到响应数据。就像我所说的那样,你无法在客户端上改变这种行为。如果您需要获取数据,最好使用本地服务器端代理为您提出请求,然后将数据从那里返回给您自己的JS。 –

回答

0

如果您使用的ASP.NET Web API时,尝试在您的HTTP配置使CORS。

 public static void Register(HttpConfiguration config) 
    {    
     config.EnableCors(); 
     config.MapHttpAttributeRoutes() ....... 

我做成功,像这样这样的API的Ajax调用..

  $.ajax({ 
      url: url, 
      type: 'POST', 
      dataType: 'json', 
      contentType: 'application/json; charset=utf-8', 
+0

试过......什么都没有。但是,谢谢! – Katz

相关问题