Угловой $ http.get вызов веб-API

0

У меня работает два веб-приложения. App1 - это угловой SPA, а App2 - веб-приложение MVC, написанное на С#. Я выполняю оба приложения из Visual Studio 2015, запуская debug в IIS Express.

Мой угловой код (App1) пытается вызвать контроллер api в App2, используя следующий (отладочный) код:

$http.get('https://localhost:12345/api/values').then(function (response) {
            alert(response.data);
        }, function (err) { 
            alert(err);
        }).catch(function (e) {
            console.log("error", e);
            throw e;
        }) .finally(function () {
            console.log("This finally block");
        });

Я всегда нажимаю "alert (err)"; line - он никогда не выполняется успешно, и err не имеет ничего полезного в этом, чтобы указать, что может быть проблемой.

В Postman (addin для Chrome) я могу подтвердить вызов, который я пытаюсь сделать, чтобы App2 отлично работал. Что я делаю не так? Может ли это быть проблемой с CORS?

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

  • 0
    ЖЕ ОРИГИНАЛЬНАЯ ПОЛИТИКА? developer.mozilla.org/en-US/docs/Web/Security/...
  • 0
    Несмотря на err , не имея ничего полезного в нем, возможно , опубликовать содержание в любом случае. Кроме того, поскольку в отладчике запущены оба сайта, действительно ли действие контроллера вообще срабатывает?
Показать ещё 1 комментарий
Теги:
asp.net-mvc
http
cors
http-get

2 ответа

0
Лучший ответ

Хорошо, проблема у меня была в веб-api (MVC 6 - ASP.net 5), поскольку я должен был разрешать запросы с моего углового веб-сайта. Файл startup.cs добавил следующее:

        public void ConfigureServices(IServiceCollection services)
        {
            // Add framework services.
            services.AddMvc();
            services.AddCors();

            StartupInitialize(services);
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
        {
            loggerFactory.AddConsole(Configuration.GetSection("Logging"));
            loggerFactory.AddDebug();

            app.UseIISPlatformHandler();

            app.UseStaticFiles();

            app.UseCors(builder => builder.WithOrigins("http://localhost:12345/"));

            app.UseMvc();

            antiForgery = (IAntiforgery)app.ApplicationServices.GetService(typeof(IAntiforgery));
        }
0

Вы либо сталкиваетесь с проблемой CORS/SAME ORIGIN POLICY, что некоторые сведения об этом в угловых js можно найти здесь: Как включить CORS в AngularJs.
так вы обрабатываете его на сервере в своем случае: http://docs.asp.net/projects/mvc/en/latest/security/cors-policy.html#cors-policy

или лучше откройте инструменты разработчика на вкладке консоли и принесите нам дополнительную информацию о том, что произошло в вашем коде.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню