HttpClient.post出现离子问题(不存在“ Access-Control-Allow-Origin”标头)

时间:2018-08-09 21:52:52

标签: rest ionic-framework web mobile ionic3

好吧,我尝试从 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未知错误

Capture image of device


在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"
    }
]

嗯,我不知道该怎么办,我确定这是一个客户端问题,因为服务器接收到空数据。 预先感谢。

1 个答案:

答案 0 :(得分:0)

这是 CORS 问题。您将需要在服务器端进行处理。出于测试目的,您可以使用chrome网站商店中的 Allow-Control-Allow-Origin:* 插件。通过启用此插件,您的问题将得到解决。