json - 如何解决混合应用程序中使用 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")
}
}`
解决方案
推荐阅读
- django - PasswordResetDoneView 未在 Django 中使用自定义模板
- c++ - 为什么这仍然执行甚至设置为 nullptr
- roxygen2 - 如何格式化类似于参数列表的 roxygen2 返回列表?
- java - 是否可以使用jsp登录表单作为spring security的自定义登录表单
- python - 使用 json 从节点到 python 的通信给了我错误
- java - Java、Maven、JSP、JPA - java.lang.NumberFormatException:对于输入字符串:“id”
- c# - 为什么在 .NET 方法注释中使用数字字符引用?
- c - PIE 文件在链接期间是否提供了虚拟内存地址?
- json - 根据 JSON 标准对某些 tableView 行应用复选标记
- android-studio - 如何阻止 AndroidStudio 覆盖 .idea/codeStyles/Project.xml