Ber*_*ian 10 cors .net-core blazor
我正在尝试从Blazor(客户端)客户端向服务器发送请求,但我不断收到此错误:
从源 '[origin route]' 获取在 '[route]'(重定向自 '[other route]')的访问已被 CORS 策略阻止:请求中不存在 'Access-Control-Allow-Origin' 标头资源。如果不透明响应满足您的需求,请将请求的模式设置为“no-cors”以在禁用 CORS 的情况下获取资源。
在服务器上,我已经CORS在管道中添加了扩展,但无济于事:
服务器启动
public void ConfigureServices(IServiceCollection services) {
services.AddCors();
services.AddResponseCompression(options => {
options.MimeTypes = ResponseCompressionDefaults.MimeTypes.Concat(new[]
{
MediaTypeNames.Application.Octet,
WasmMediaTypeNames.Application.Wasm,
});
});
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env) {
app.UseCors(x => x.AllowAnyHeader().AllowAnyMethod().AllowAnyOrigin().AllowCredentials());
app.UseResponseCompression();
app.UseMvc();
app.UseBlazor<Client.Startup>();
}
Run Code Online (Sandbox Code Playgroud)
Blazor 客户端请求
public async Task<Catalog> GetCatalogAsync() {
try {
HttpRequestMessage message = new HttpRequestMessage {
RequestUri = new Uri(BASE_PATH + Routes.GET_CATALOG), //BASE_PATH= 172.XX.XX.XX:8600
Method = HttpMethod.Get
};
var resp = await this.client.SendAsync(message); // client is HttpClient
var resultString = await resp.Content.ReadAsStringAsync();
var result = JsonConvert.DeserializeObject<Catalog>(resultString);
return data;
} catch (Exception ex) {
throw;
}
}
Run Code Online (Sandbox Code Playgroud)
控制器
[HttpGet]
[Route(Routes.GET_CATALOG)]
public async Task<Catalog> GetCatalogAsync() {
try {
var registry = await this.adminService.GetCatalogAsync();
return registry;
} catch (Exception ex) {
throw;
}
}
Run Code Online (Sandbox Code Playgroud)
POCO
[Serializeable]
public struct Catalog{
}
Run Code Online (Sandbox Code Playgroud)
我还能做什么才能访问我的服务器?是因为 Blazor 吗?如您所见,我已经添加了UseCors(...).
PS
我已经与客户端一起发布了我的 Blazor 服务器项目。它们在同一目录中。我将它放在计算机上的这个文件夹中,我正在尝试从我的计算机打开 blazor : 172.168.18.22:8600/
更新
我也尝试向我的添加标题HttpRequestMessage无济于事:
HttpRequestMessage message = new HttpRequestMessage {
RequestUri = new Uri(BASE_PATH + Routes.GET_CATALOG),
Method = HttpMethod.Get,
};
message.Headers.Add("Access-Control-Allow-Origin","*");
message.Headers.Add("Access-Control-Allow-Credentials", "true");
message.Headers.Add("Access-Control-Allow-Headers", "Access-Control-Allow-Origin,Content-Type");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13048 次 |
| 最近记录: |