Angular $http.get 调用网络 api

Angular $http.get call to web api

我有两个 Web 应用程序 运行。 App1 是一个 angular SPA,App2 是一个用 c# 编写的 MVC web api。我正在执行 Visual Studio 2015 年的两个应用程序,运行 在 IIS Express 中进行调试。

我的 angular 代码 (App1) 正在尝试使用以下(调试)代码调用 App2 中的 api 控制器:

$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);" 行 - 它从未成功执行,并且 err 中没有任何有用的信息来指示可能是什么问题。

在 Postman(Chrome 的插件)中,我可以确认我尝试对 App2 进行的调用工作正常。我究竟做错了什么?这可能是 CORS 的问题吗?

提前致谢!

您遇到 CORS/SAME ORIGIN POLICY 问题,可以在 angular js 中找到关于它的一些信息:How to enable CORS in AngularJs.
这就是您在服务器站点中处理它的方式:http://docs.asp.net/projects/mvc/en/latest/security/cors-policy.html#cors-policy

或者您最好在控制台选项卡中打开开发人员工具,并向我们提供有关代码中发生的情况的更多信息。

好的,我遇到的问题是网络 api (MVC 6 - ASP.net 5),因为我必须允许来自我的 angular 网站的请求。 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));
        }