首页 > 解决方案 > 如何将 GET 请求从 Internet Explorer 发送到 Asp.Net Core API?

问题描述

我正在开发 Asp.Net Core 3.1 API,当我从 google chrome、Edge、Postman 发送 GET 请求时,一切都按预期工作。但是当我从 Internet Explorer 发送 GET 请求时,它开始下载一个文件default.json,其内容是 GET 请求的响应。

默认操作方法:

public IEnumerable<string> Get()
{
    return new string[] { "Welcome" };
}

default.json 内容:

[
    "Welcome"
]

我在互联网上搜索,但找不到任何有用的东西。

FVI,当我使用 Visual Studio 运行 API 或使用 IIS 在服务器上部署的 API 时,我有同样的观察结果。

IE版本: 11.900.18362.0

所以我不得不提问。

  1. IE 不支持这个,这是 IE 的默认行为吗?
  2. 如果是,那么如何解决?

标签: c#asp.net-coreinternet-explorerinternet-explorer-11asp.net-core-webapi

解决方案


这是 IE 的默认行为,归结为它根本不知道如何处理具有 mime 类型的内容*/json,因此建议下载。

假设这是针对一般用户的,并且您只想在浏览器中显示 json 数据,您可以将内容服务器端转换为文本。

public ContentResult Get()
{
    var jsondata = new string[] { "Welcome" };
    return Content(JsonSerializer.Serialize(jsondata));
}

如果您打算对实际的 json 数据做一些事情,这通常在api使用 .不会有任何问题,就像你遇到的那样。

var xhr = new XMLHttpRequest();
xhr.open('GET', '/api/your-method', true);
xhr.onload = function (e) {
    if (this.status == 200) {
        var jsonstring = this.responseText;
        // do something with the json string, e.g. JSON.parse(jsonstring)
    }
};
xhr.send();

这是一些建议更改注册表的帖子,尽管它们不可行,除非它用于您自己的本地计算机(如果是,选择开箱即用的浏览器必须更容易) .


编辑

正如评论中所建议的,另一种选择是显式更改 mime 类型:


推荐阅读