我正在使用Angular 5和CouchDB创建一个网站。在我的database.service.ts中,方法如下所示:
import {HttpClient} from '@angular/common/http';
const auth = my database adress;
constructor(private http: HttpClient) {}
createUser(id: string, email_: string, password_: string, firstname: string, surname_: string, role: string): any {
const obj: object = {
name: firstname, surname: surname_, role, email: email_, password: password_, theme: 'indigo', projects: {}, widgets: {}
};
return this.http.put(auth + '/' + id, JSON.parse(JSON.stringify(obj)))
.map((res: Response) => res);
}
我应该像这样创建用户时调用方法:
this.databaseService.createUser(id, email, password, firstname, surname, this.role)
.subscribe(result => {},
err => {
console.log(err);
alert('No connection to database available!');
});
这在Chrome中运行得非常好,但在Firefox中却不行! PUT甚至没有在Firefox中执行,所以它不会成为CouchDB的问题(我通过wireshark和npcap捕获了流量)。 GET和POST在firefox中运行良好,但PUT没有。标题看起来有了(#34;接受":' application / json'等等......)我不知道什么是错的。
应该至少执行,还是我错了?
感谢您的帮助。
答案 0 :(得分:0)
您应该尝试明确指定content-type
标头。我与旧客户端有类似的问题,这解决了问题
import { HttpHeaders } from '@angular/common/http';
const httpOptions = {
headers: new HttpHeaders({
'content-type': 'application/json'
})
};
// ...
this.http.put(auth + '/' + id, obj, httpOptions);
答案 1 :(得分:0)
我解决了问题:D
对于couchDB的“auth”Url是
http://username:password@127.0.0.1:5984/my_database
Firefox以错误的方式解释了这一点(我绝对不知道为什么!)但是当我没有验证时,它会起作用。
感谢您的帮助!
答案 2 :(得分:0)
在我的情况下,WebAPI在本地运行。在chrome浏览器中工作正常,但使用Firefox没有任何反应。
结果是Firefox不信任自签名安全证书。只需直接打开WebAPI,即在Firefox中打开https://localhost:3000,然后确认安全异常即可。
那为我解决了这个问题。