c# - 如何将 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
所以我不得不提问。
- IE 不支持这个,这是 IE 的默认行为吗?
- 如果是,那么如何解决?
解决方案
这是 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 类型:
推荐阅读
- compiler-errors - Jags RUNTIME ERROR:第 17 行的编译错误。尝试重新定义节点 delta[15,1,1]
- angular - 带有免费输入的Angular 6下拉列表
- python - FOR 循环问题和 IP 地址相关性
- python - 如果可以通过在列表中放置加法或减法运算来获得目标整数,则编写应返回 true 的函数
- amazon-web-services - 具有无服务器本地环境的 AWS Cognito
- c++ - 为什么 C++ 正则表达式这么慢?
- java - 为什么下面给出的 URL 没有在 Webview 中打开
- javascript - 如果在数据库中找到记录,则表单提交不会停止
- go - 在 golang 中将 []byte 转换为“虚拟”文件对象的简单方法?
- javascript - 导航栏太宽