2013-07-07 150 views
0

我刚刚了解到,使用getJson与来自其他域/端口的url通常会导致跨域策略问题。getJson访问控制 - 允许来源

有了这个代码:

var appGetApi = "http://localhost:30028/api/values"; 
    $.getJSON(appGetApi, function (_returnedJson) { 
     ... 
    }); 

我得到这个错误:

XMLHttpRequest cannot load http://localhost:30028/api/values. 
Origin http://localhost:17437 is not allowed by Access-Control-Allow-Origin. 

在网上搜索答案后,似乎增加&回调=?是一个着名的修复程序。所以我做到了。

var appGetApi = "http://localhost:30028/api/values&callback=?"; 
    $.getJSON(appGetApi, function (_returnedJson) { 
     ... 
    }); 

但我仍然得到一个错误:

Failed to load resource: the server responded with a status of 400 (Bad Request) 
http://localhost:30028/api/values&callback=jQuery11020629610788077116_1373178114158?_=1373178114159 

这是我第一次与API和我现在在如何解决这个问题是完全无能。请帮助我们。谢谢。

回答

0

默认情况下,W2K3及更高版本中的IIS不会提供非知道的MIME类型的文件(而是返回404错误)。

您需要将一个MIME类型添加到IIS以允许它提供该类型的文件。您可以在网站级别或服务器级别进行设置。

要设置这整个服务器:

打开在IIS管理器的服务器属性,然后单击MIME类型 单击“新建”。为扩展输入“JSON”,为MIME类型输入“application/json”。