首页 > 解决方案 > 如何解决混合应用程序中使用 angular 6、ionic 4 作为前端、scala 作为后端的 CORS 策略错误?

问题描述

我正在尝试使用 GET 方法进行登录,使用以下代码:

 login(data){
 return this.http.get("http://Server_IP:88/mLogin/" + 
 data.controls['mobile'].value + "/" + 
 data.controls['password'].value,{}).pipe(tap(
    res=>{console.log('User: '+res)},
    err=>console.log(err) ));
 }

上面的代码在 chrome 浏览器上运行良好并且也得到了响应。但它在构建 APK 时不起作用,即它在设备上不起作用。当我们检查应用程序时,它会在控制台中得到响应,但会出现以下错误:

从源“ http://localhost:8080 ”访问“ http://Server_IP:88/mLog ”处的 XMLHttpRequest已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:没有“访问控制” -Allow-Origin' 标头出现在请求的资源上。

这是我的 scala(服务器代码):

  `nextFilter(requestHeader)
   .map { result =>
    if (requestHeader.method.equals("OPTIONS")) {
     Results.Ok.withHeaders(
    Http.HeaderNames.ACCESS_CONTROL_ALLOW_ORIGIN -> "*",
    Http.HeaderNames.ACCESS_CONTROL_ALLOW_HEADERS -> "X-Requested- 
     With, 
    Accept, Content-Type",
    Http.HeaderNames.ACCESS_CONTROL_ALLOW_METHODS -> 
    "OPTIONS,HEAD,GET,POST,PUT,PATCH,DELETE")
   } else {
   result.withHeaders(
   Http.HeaderNames.ACCESS_CONTROL_ALLOW_ORIGIN -> "*",
    Http.HeaderNames.ACCESS_CONTROL_ALLOW_HEADERS -> "X-Requested- 
    With, Accept, Content-Type",
 Http.HeaderNames.ACCESS_CONTROL_ALLOW_METHODS -> 
  "HEAD,GET,POST,PUT,PATCH,DELETE",
   Http.HeaderNames.ACCESS_CONTROL_EXPOSE_HEADERS -> "X-Custom- 
  Header-To-Expose")
      }
      }`

标签: jsonangularscalaionic-framework

解决方案


推荐阅读