getJson Access-Control-Allow-Origin

时间:2013-07-07 06:26:18

标签: json jsonp getjson same-origin-policy

我刚刚了解到将getJson与来自其他域/端口的url一起使用通常会导致跨域策略问题。

使用此代码:

    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. 

在网络上搜索答案后,似乎添加 & callback =? 是一个着名的修复方法。所以我做到了。

    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​​,我现在对如何解决这个问题完全无能为力。请帮帮我们。感谢。

1 个答案:

答案 0 :(得分:0)

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

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

为整个服务器设置此项:

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