问题描述
我有一个Ionic应用程序,该应用程序应请求用户,添加用户,更新和从Firebase数据库中删除。为此,我一直在关注Andreas Dormann的Ionic 5书(因此使用HttpClient)和本教程https://angular.io/guide/http。基本上,我有一个页面可以吸引这样的用户:
users: Any;
constructor(public useRSService: UseRSService) { }
.
.
.
getUsers() {
this.useRSService.getUsers().then(data => this.users = Object.keys(data).map(i => data[i]));
}
public getUsers(): Promise<object> {
return this.http.get<User[]>(`${this.baseUrl}/Users.json`).toPromise();
}
public addUser(newUser: User) {
return this.http.post<User>(`${this.baseUrl}/Users.json`,newUser).toPromise();
}
public updateUser(id,user) {
return this.http.put<User>(`${this.baseUrl}/Users.json/${id}`,newUser,this.httpOptions).pipe();
}
httpOptions
是一个对象:
httpOptions = {
headers: new HttpHeaders({
'Access-Control-Allow-Origin': '*','Access-Control-Allow-Headers': 'Access-Control-Allow-Origin,*','Access-Control-Allow-Methods': 'GET,PUT,POST,DELETE,OPTIONS','Accept': 'application/json','Content-Type': 'application/json'
})
};
this.useRSService.updateUser(userId,changedUser).subscribe();
public deleteUser(id) {
return this.http.delete<User>(`${this.baseUrl}/Users.json/${id}`,this.httpOptions).toPromise();
}
处理方式如下:
this.useRSService.deleteUser(user.id).then(
data => showSuccess(data),error => showError(data)
);
showSuccess
和showError
仅在屏幕或控制台上显示消息。到目前为止,getUsers
和addUser
工作正常。但是,如果我尝试更新和/或删除用户,则会得到以下信息:
Access to XMLHttpRequest at 'https://MY_DB_URL.firebaseio.com//Users.json/THE_USER_ID'
from origin 'http://localhost:8100' has been blocked by CORS policy: Response to
preflight request doesn't pass access control check: It does not have HTTP ok status.
那么,为什么这些请求仅在不使用参数的情况下才能起作用?我想我正确使用了ID,但是如果我输错了,请告诉我。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)