После настройки CORS веб-страница возвращает ошибку, но и результаты - PullRequest
1 голос
/ 07 мая 2019

Я создаю простой бэкэнд ASP.NET, и мне нужно включить CORS в белый список только моего веб-сайта (с которого поступают запросы), в то время как он должен быть недоступен из любого другого источника.Я сделал это, как на картинке ниже (и я честно попробовал любой другой способ, который я знаю, но безуспешно), и чего я достиг, так это того, что при выполнении любого запроса (GET, PUT, POST ...) у меня всегда не возникает проблемвеб-сайт из белого списка (и это нормально), но я также получаю ответ из других источников, в то время как у меня только общая ошибка CORS на консоли браузера (повторяю, при получении ошибки я также получаю ответ, который мне не нужен).Что мне делать?

Заранее спасибо,

Matteo

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

    public IHostingEnvironment Configuration { get; }

    // This method gets called by the runtime. Use this method to add services to the container.
    public void ConfigureServices(IServiceCollection services)
    {


        services.AddCors(options =>
        {
            options.AddPolicy("AllowMyOrigin",
            builder => builder.WithOrigins("https://myclient"));
        });
        services.Configure<CookiePolicyOptions>(options =>
        {
            // This lambda determines whether user consent for non-essential cookies is needed for a given request.
            options.CheckConsentNeeded = context => true;
            options.MinimumSameSitePolicy = SameSiteMode.None;
        });

        services.AddEntityFrameworkSqlite()
            .AddDbContext<WebApiContext>(options => options.UseSqlite($"Data Source={Configuration.WebRootPath}/tutoriel.db"));            

        services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
        services.Configure<MvcOptions>(options =>
        {
            options.Filters.Add(new CorsAuthorizationFilterFactory("AllowMyOrigin"));
        }); //Imposta il cors su tutto il progetto (resource: DZone)
    }

    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {

        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            app.UseExceptionHandler("/Home/Error");
            // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
            app.UseHsts();
        }
        app.UseCors("AllowMyOrigin");
        app.UseHttpsRedirection();
        app.UseStaticFiles();
        app.UseCookiePolicy();

        app.UseAuthentication();
        app.UseMvc(routes =>
        {
            routes.MapRoute(
                name: "default",
                template: "{controller=Home}/{action=Index}/{id?}");


        });
    }
}

Ошибка:

Object { headers: {…}, status: 0, statusText: "Unknown Error", url: "https://mysite", ok: false, name: "HttpErrorResponse", message: "Http failure response for https://mysite: 0 Unknown Error", error: error }
core.js:15724

Предупреждение:

Блокировка перекрестного чтения (CORB) заблокировала ответ перекрестного происхождения https://mysite с приложением MIME-типа / json.См. https://www.chromestatus.com/feature/5629709824032768 для получения более подробной информации.

ошибка запроса несанкционированного сайта

, но результат Json показал

{"id":"w.paciaroni","luogo":"giappone","disponibilita":false}

1 Ответ

0 голосов
/ 07 мая 2019

Повторяю, при получении ошибки я также получаю ответ

Это ожидаемое поведение. CORS - это браузер функция безопасности. Он предназначен для защиты пользователя , а не вашего сервера, от атак межсайтового скриптинга.

который я не хочу

Тогда вам придется реализовать это на сервере. Самый простой способ - написать промежуточное программное обеспечение или ActionFilter, который проверяет заголовок Origin запроса. Если он не соответствует ни одному из ваших разрешенных источников, верните ответ об ошибке (я рекомендую статус ошибки 412 Предусловие не выполнено ).

Примечание по безопасности: злоумышленник может легко подделать заголовок Origin, поэтому он будет только запретить самым тупым хакерам доступ к вашей веб-странице.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...