J'ai une application écrite en Angular 4 appelant un couchdb tous sur localhost mais différents ports. J'utilise couchdb avec une application Aurelia sans aucun problème.Angular 4 appel couchdb a CORS erreur, mais aucun contrôle en amont apparaît dans fiddler
Maintenant que je passe à angulaire 4 et angulaire MD, je peux sembler passer ces problèmes cors.
Voici le code qui appelle CouchDB
commonUpdate privé (contenu: any, url: string, méthode: string = 'put') {
console.log("in common") const myHeaders = new Headers(); myHeaders.append('Content-Type', 'application/json'); const options = new RequestOptions({ headers: myHeaders, withCredentials: true }); if (content && content._rev && content._rev.length >= 5) { url = url + '/' + content._id; } const status = new DbStatus(); status.ok = false; let response: any; try { if (content) { const contentJson: string = JSON.stringify(content); this.http.post(url, contentJson, options).map(res => res.json()).subscribe(data => { console.log(data['results']); }) } status.ok = this.isHttpStatusSuccess(response.status); if (status.doc) { if (Array.isArray(status.doc.docs)) { if (status.doc.docs.length === 0) { status.ok = false; status.reason = 'Empty Array'; if (!status.error) status.error = status.reason; } } } status.httpStatus = response.status; status.response = response; } catch (error) { status.ok = false; }
Message d'erreur:
VM27427: 1 XMLHttpRequest ne peut pas charger localhost: 5984/_session. Les demandes d'origine croisée ne sont prises en charge que pour les schémas de protocole: http, data, chrome, chrome-extension, https.
[cors]
origins = *
credentials = true
headers = accept, authorization, content-type, origin, referer
Couch-Rev, Set-Cookie
methods = GET, PUT, POST, HEAD, DELETE
Je ne comprends pas pourquoi cela fonctionne. Encore une fois, fiddler n'affiche pas de demande de méthode OPTION de contrôle en amont. Toutefois, l'exécution de la méthode OPTION à partir de postman renvoie les méthodes autorisées de GET et HEAD. Peut-être que le navigateur est en cache, mais j'ai des outils de dev ouverts avec la désactivation de la mise en cache cochée.
Suggestions