好吧,我尝试从 Ionic3 中的 HttpClient 类发送一个发布请求,在下一个代码片段中,我在TypeScript中显示该功能。
constructor(public http: HttpClient, ...){ ... }
loginAndGetUserData(email0, password0): any
{
return this.http.post
(
'http://xxx.a_api/api/login.json',
{
email: email0,
password: password0
},
{
headers:
{
'Access-Control-Allow-Origin':'*',
'Access-Control-Allow-Methods':'POST, GET, OPTIONS, PUT',
'Content-Type':'application/json',
'Accept':'application/json'
}
}
);
}
然后,当我调用此方法时,我收到一条错误,未定义代码作为响应。
ErrorCode:未定义
(未知网址)的HTTP错误响应:0未知错误
在Android日志中,在函数调用之后,我收到以下消息:
08-09 21:16:31.649 19292-19292 / io.ionic.starter D / SystemWebChromeClient:http://localhost:8080/:第0行:XMLHttpRequest无法加载http://xxx.a_api/api/login.json。所请求的资源上没有“ Access-Control-Allow-Origin”标头。因此,不允许访问来源“ http://localhost:8080”。响应的HTTP状态码为405。
08-09 21:16:31.649 19292-19292 / io.ionic.starter I / chromium:[INFO:CONSOLE(0)]“ XMLHttpRequest无法加载http://xxx.a_api/api/login.json。没有'Access-Control-Allow-Origin'标头存在于所请求的资源上。因此,不允许访问来源'http://localhost:8080'。响应的HTTP状态码为405。”,来源:http://localhost:8080/(0)
在我的PHP代码中,我尝试将“ Access-Control-Allow-Origin:*”放在标头中,但它从客户端接收到空数据。在某些 Ionic 论坛中,有人说我必须修改 ionic.config.json 文件,并在 proxies 属性中添加 path 和 proxyUrl ,但均不能解决我的问题。 ionic.config.json 文件中的
代理属性如下所示:
"proxies":
[
{
"path": "/api",
"proxyUrl": "http://xxx.a_api/api"
}
]
嗯,我不知道该怎么办,我确定这是一个客户端问题,因为服务器接收到空数据。 预先感谢。
答案 0 :(得分:0)
这是 CORS 问题。您将需要在服务器端进行处理。出于测试目的,您可以使用chrome网站商店中的 Allow-Control-Allow-Origin:* 插件。通过启用此插件,您的问题将得到解决。