httpclient - Blazor Webassembly - 调用外部 API
问题描述
我一直在尝试从 Blazor 客户端 Web 程序集中调用单独的 asp.net 核心 Web api。我在这个控制器中使用了模板 Web API 模板。我在 startup.cs 中设置了 CORS。我在 Blazor 客户端中使用标准 HTTP 客户端。在本地运行,我可以在 API 代码上设置一个断点并查看它是否被命中。但是客户端抛出异常:类型错误
任何帮助将不胜感激。
大卫
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
{
private static readonly string[] Summaries = new[]
{
"Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
};
private readonly ILogger<WeatherForecastController> _logger;
public WeatherForecastController(ILogger<WeatherForecastController> logger)
{
_logger = logger;
}
[HttpGet]
public IEnumerable<WeatherForecast> Get()
{
var rng = new Random();
return Enumerable.Range(1, 5).Select(index => new WeatherForecast
{
Date = DateTime.Now.AddDays(index),
TemperatureC = rng.Next(-20, 55),
Summary = Summaries[rng.Next(Summaries.Length)]
})
.ToArray();
}
}
Startup.cs
services.AddCors(options =>
{
options.AddPolicy(name: MyAllowSpecificOrigins,
builder =>
{
builder.WithOrigins("http://example.com",
"http://www.contoso.com")
.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader();
});
});
Blazor Client
var response = await Http.GetFromJsonAsync<WeatherForecast[]>("WeatherForecast");
解决方案
我遇到了同样的错误,在使用开发人员工具控制台时,看起来混合内容是不允许的(https 和 http)。混合内容:“https://”处的页面是通过 HTTPS 加载的,但请求了不安全的资源“http://”。此请求已被阻止;内容必须通过 HTTPS 提供。检查您的页面是否也是这种情况。
推荐阅读
- django-rest-framework - 覆盖.get_queryset()时如何正确返回错误?
- python - 一种更有效的绘制四个点的方法,将它们连接起来并在 python 中为框下的区域着色
- python - 尝试在 django 中删除模型对象时出错
- sql - Big Query Standard SQL 使用 Partition By 和 ARRAY_AGG() 函数
- python - 如何使用另一个数组的所有元素声明一个数组?
- sas - 如果我们在 SAS 程序中有多个 where 条件可以回答,那么为什么最后显示输出?
- mysql - 当我尝试输入我的数据时,如何解决这个“SQLSTATE [HY000] [2006] MySQL 服务器已经消失”?
- node.js - mongo db 的 $in 函数在 nodejs 中不起作用,除了 :(
- javascript - VueJS将路由器传递给子组件
- android - 处理 JSON 响应