我是IONIC的初学者,我将细长的api与ionic 3结合使用。出现此错误:
“无法加载http://sargam.digifrizz.com/api/v1/empLogin:对预检请求的响应未通过访问控制检查:所请求的资源上没有'Access-Control-Allow-Origin'标头。来源'http://localhost:8100因此,不允许访问。”
我也在使用代理URL。
{
"name": "sargam",
"integrations": {
"cordova": {}
},
"type": "ionic-angular",
"proxies": [
{
"path": "/v1/empLogin",
"proxyUrl": "http://sargam.digifrizz.com/api/v1/empLogin"
}
]
}
我正在使用以下代码:
return new Promise((resolve, reject) => {
let headers = new Headers();
headers.append('Access-Control-Allow-Origin' , '*');
headers.append('Access-Control-Allow-Headers','Origin, Content-Type, X-Auth-Token, authorization, X-Requested-With');
headers.append('Access-Control-Allow-Methods', 'POST, GET, OPTIONS, PUT');
headers.append('Access-Control-Allow-Credentials', 'true');
headers.append('Accept','application/json');
headers.append('Content-Type', 'application/json');
this.http.post(apiUrl+'empLogin', JSON.stringify(credentials), {headers: headers})
.subscribe(res => {
resolve(res.json());
}, (err) => {
reject(err);
});
});
请帮助我解决这个问题
谢谢 斯尼格达
答案 0 :(得分:1)
CORS访问控制必须在服务器端实现。您应该以200 OK响应OPTIONS请求,并使用正确的配置包含这些标头:Access-Control-Allow-Origin
,Access-Control-Allow-Headers
和Access-Control-Allow-Methods
。您应该阅读CORS文档,了解如何在后端实现它。
答案 1 :(得分:0)
将cors plugin添加到您的Chrome浏览器中,它现在可以正常使用。 但是您在服务器端有处理错误。
答案 2 :(得分:0)
我正在使用“ Access-Control-Allow-Origin,Access-Control-Allow-Header和Access-Control-Allow-Methods”后端,但出现相同的错误
后端响应是
access-control-allow-headers→X-Requested-With,内容类型,接受,原始,授权 访问控制允许方法→GET,PUT,POST,DELETE,OPTIONS 访问控制允许来源→* 缓存控制→不存储,不缓存,必须重新验证 连接→关闭 内容长度→412 内容类型→application / json; charset = utf-8 日期→2018年12月21日星期五08:06:22 GMT 过期→格林尼治标准时间1981年11月19日星期四08:52:00 实用→不缓存 服务器→Apache / 2.2.15 x-powered by→PHP / 7.0.27