即使启用了CORS,Ionic 2也无法发布到asp dotnet核心

时间:2017-07-15 19:41:09

标签: angular ionic2 .net-core

我试图寻找答案,有些是接近但不是我想要的。

这是我的问题,我正在开发一个Ionic应用程序,目前正在开发Web浏览器视图。我无法将任何内容发回我的asp dotnet核心后端。

我的堆栈如下: 前端

  • Ionic 2 - 使用最新版Angular 4的最新版本
  • Nginx - 作为我的代理服务器
  • Docker - 作为运行dotnet核心应用程序的容器

以下是我正在尝试的帖子的代码:

let body =JSON.stringify({ 'username': username, 'password': password }); 
let options = new RequestOptions({headers:new Headers()});
options.headers.set('Content-Type', 'application/json; charset=UTF-8');
options.headers.set( 'Accept', 'application/json' );

return this.http.post(this.loginUrl,body,options)
  .map((res: Response) => res.json())
  .catch((error: any) => {
    console.log("ERROR", error);
    return Observable.throw(error.json().error || 'Server error')
  })

我的代理已

add_header 'Access-Control-Allow-Origin' *;

我的支持在Startup.cs中有以下CORS配置

            options.AddPolicy("CorsPolicy",
            builder => builder.AllowAnyOrigin()
                .AllowAnyMethod()
                .AllowAnyHeader()
                .AllowCredentials());
        });

并在配置功能

            app.UseMvc().UseCors("CorsPolicy");

我在Visual Studio 2017的输出窗口中看到响应到达容器:

Application Insights Telemetry (unconfigured): {"name":"Microsoft.ApplicationInsights.Dev.Request","time":"2017-07-15T19:29:10.5330300Z","tags":{"ai.internal.nodeName":"9a9595bd67c1","ai.operation.id":"0HL6BMO90PHKC","ai.application.ver":"1.0.0.0","ai.operation.name":"OPTIONS Users/AuthenticateUser","ai.internal.sdkVersion":"aspnet5c:2.0.0","ai.cloud.roleInstance":"9a9595bd67c1","ai.location.ip":"172.18.0.5"},"data":{"baseType":"RequestData","baseData":{"ver":2,"id":"HKmnWfByHeU=","name":"OPTIONS Users/AuthenticateUser","duration":"00:00:11.2837000","success":false,"responseCode":"415","url":"http://leo.users/users/authenticate","properties":{"DeveloperMode":"true","httpMethod":"OPTIONS","AspNetCoreEnvironment":"Development"}}}}

我尝试了多种方法在Ionic 2侧设置标头。 我不知道该怎么做/如果我只是遗漏了什么。非常感谢帮助。

由于

1 个答案:

答案 0 :(得分:1)

感谢misha130上面的评论。这解决了我的问题。

我只需要更新我的离子代理文件并添加:

context = jObject.pop('runContext')
jObject['context']['user'] = {}
jObject['context']['user'] = context

再次感谢。