.net 尝试访问Web API时GET不工作

w46czmvw  于 2022-12-24  发布在  .NET
关注(0)|答案(3)|浏览(144)

我在.net中写了一个简单的web API,并在我在Windows 10上的iis下创建的一个网站上运行它。如果我把网址放入Chrome“https://localhost:64591/api/custom”,json会传递从数据库调用的记录。没有问题。
我把同样的url放到XMLHttpRequest对象中,onload事件从来没有发生过。作为测试,我用一个我知道可以工作的外部url替换了url。onload事件触发,response对象工作。看起来iis出了问题,阻塞了“get”请求。
下面是代码。这里是外部url的工作:https://ghibliapi.herokuapp.com/films .....通过iis访问API肯定有问题。

var request = new XMLHttpRequest();
request.open('GET', 'https://localhost:64591/api/custom', true)
request.onload = function () 
{
  alert(this.response); 
}
request.send();
nlejzf6q

nlejzf6q1#

试试这个,对我很有效(我使用Python服务器,如果你也想看到它的评论)

url="127.0.0.1"; // or your loaclhost etc
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
        var response = xhttp.responseText;
    }
};
xhttp.open("GET", url, true);
xhttp.send();
1zmg4dgp

1zmg4dgp2#

您很可能遇到了CORS问题。
尝试让服务器将Access-Control-Allow-Origin: *作为头的一部分发回。
我对IIS几乎一无所知,但this可能会有所帮助。

gt0wga4j

gt0wga4j3#

看起来这是一个CORS问题。我可以从HTML页面执行GET和POST,只要该页面来自与我的Web API相同的服务器,并且我没有在字符串“api/custom”中提到服务器,而不是“https://localhost:64591/api/custom”。我可以接受这一点,因为我只是在练习Web API的东西。但在某些时候,我必须学习如何在iis中配置CORS模块。

相关问题