被 CORS 策略阻止的 Blazor 请求

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)

Ber*_*ian 2

不知何故,问题是由于浏览器上缓存的客户端版本非常旧造成的。出现此问题后,我再也不会忘记清除浏览器缓存了。感谢大家的帮助和支持!