Próbuję uzyskać dostęp do danych z interfejsu API, ale dostałem ten błąd

Dostęp do XMLHttpRequest pod adresem „http://example.com/api/login” od początku „http: // localhost: 3000” został zablokowany przez zasady CORS: odpowiedź na żądanie inspekcji wstępnej nie przechodzi kontroli dostępu check: Żądany zasób nie zawiera nagłówka „Access-Control-Allow-Origin”.

To jest mój kod

return axios.post('http://example.com/api/login', { username: username, password: password }).then(response => {
        console.log('response', response);

        if (response.status === 400 || response.status === 500)
            throw response.data;
        return response.data;
    }).catch(err => {
        console.log('err', err);

        throw err[1];
    });

Backend zbudowany za pomocą asp.net

Dziękuję Ci

0
Shady Hakim 12 marzec 2020, 17:20

2 odpowiedzi

Najlepsza odpowiedź

Ten problem dotyczy Twojego serwera. Twój serwer nie zezwala na żądania pochodzące z różnych domen. W Twoim przypadku http://example.com/api/login i http://localhost:3000 znajdują się w różnych domenach. Możesz zezwolić na dowolną domenę w kodzie asp.net. Poniższy kod może Ci się przydać:

public class Startup
{
    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;
    }

    readonly string MyAllowSpecificOrigins = "_myAllowSpecificOrigins";

    public IConfiguration Configuration { get; }

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddCors(options =>
        {
            options.AddPolicy(MyAllowSpecificOrigins,
            builder =>
            {
                builder.WithOrigins("http://example.com",
                                    "http://www.contoso.com");
            });
        });

        services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
    }

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            app.UseHsts();
        }

        app.UseCors(MyAllowSpecificOrigins); 

        app.UseHttpsRedirection();
        app.UseMvc();
    }
}

Aby uzyskać więcej informacji, przejdź tutaj

0
Burak Gavas 12 marzec 2020, 14:39

Po wielu godzinach poszukiwań znalazłem to rozszerzenie do Chrome, które rozwiązuje problem https://chrome.google.com/webstore/detail/ allow-cors-access-control / lhobafahddgcelffkeicbaginigeejlf

-1
Shady Hakim 12 marzec 2020, 20:17