Ich mache eine POST-Anfrage und die Anfrage sitzt nur, ausstehend, bis es schließlich fehlschlägt. Ich habe die Nginx-Protokolle und die Node-Server-Protokolle überwacht, und die Anforderung wird nicht einmal registriert. Das funktioniert für jeden anderen, den ich bis auf einen Kollegen getestet habe. Wenn ich den Edge-Browser oder einen anderen Computer verwende, funktioniert es einwandfrei.OPTIONEN (fehlgeschlagen) nur auf Chrome und Firefox
Ich habe versucht, POST-Anfragen an andere (benutzerdefinierte) Server zu machen, und es hängt auch an Optionen dort. Ich habe auch die POST-Anfrage mit jQuery gemacht und es schlägt auf die gleiche Weise fehl.
Es ist vielleicht erwähnenswert, dass ich das withCredentials Flag verwende.
Headers:
Provisional headers are shown
Access-Control-Request-Headers:content-type
Access-Control-Request-Method:GET
Origin:http://localhost:8080
Referer:http://localhost:8080/<path>
User-Agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.84 Safari/537.36
Die Anfrage:
public login(user) {
const endpoint = `http://<url>`;
let headers = new Headers();
headers.append('Content-type', 'application/json');
return this.http
.post(endpoint, JSON.stringify(user), {
headers: headers,
});
}
ich auf den Anruf in meiner Komponente abonnieren:
this._accountService.login(this.user)
.subscribe(res => {
console.log("logged in!");
if (res.json().status === "success") {
window.location.href = `/home/${this.org}/${this.product}`;
}
else {
// What other options are there?
console.log("Do something else maybe?");
}
},
err => {
this.invalidLogin = true;
console.log("Ye shall not pass!");
});
Erfolgreiche Benutzer-Header
Accept:*/*
Accept-Encoding:gzip, deflate, sdch
Accept-Language:en-US,en;q=0.8
Access-Control-Request-Headers:content-type
Access-Control-Request-Method:POST
Connection:keep-alive
Host:<url>
Origin:<url>
Referer:<url>
User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.33 Safari/537.36
Von chrome: // net-internals/# Veranstaltungen
t=61869793 [st= 0] +REQUEST_ALIVE [dt=60162]
--> has_upload = false
--> is_pending = true
--> load_flags = 34624 (DO_NOT_SAVE_COOKIES | DO_NOT_SEND_AUTH_DATA | DO_NOT_SEND_COOKIES | MAYBE_USER_GESTURE | VERIFY_EV_CERT)
--> load_state = 14 (WAITING_FOR_RESPONSE)
--> method = "OPTIONS"
--> net_error = -1 (ERR_IO_PENDING)
--> status = "IO_PENDING"
--> url = "<url>"
t=61929955 [st=60162] -HTTP_STREAM_PARSER_READ_HEADERS
--> net_error = -324 (ERR_EMPTY_RESPONSE)
t=61929955 [st=60162] -HTTP_TRANSACTION_READ_HEADERS
--> net_error = -324 (ERR_EMPTY_RESPONSE)
t=61929955 [st=60162] -URL_REQUEST_START_JOB
--> net_error = -324 (ERR_EMPTY_RESPONSE)
t=61929955 [st=60162] URL_REQUEST_DELEGATE [dt=0]
t=61929955 [st=60162] -REQUEST_ALIVE
--> net_error = -324 (ERR_EMPTY_RESPONSE)
Ich vermute, wirklich ist dies etwas im Zusammenhang, die in meinem Browser zwischengespeichert wird (s), aber ich kann wirklich nicht das, was finden. Ich habe alle Cookies und alles, was gespeichert werden kann, gelöscht. Wo kann ich sonst noch nachsehen? Dies ist eindeutig etwas Lokales für meinen Computer/Browser (und eine andere unglückliche Person).
http://stackoverflow.com/questions/10143093/origin-is-not-allowed-by-access-control-allow-origin –
Dies ist nicht im Zusammenhang mit Angular. Der Server, auf den Sie zugreifen, muss CORS-Anforderungen unterstützen. 'OPTIONS' ist eine Preflight-Anfrage, die der Browser autonom durchführt. Wenn es die erwarteten 'Access-Control-Allow -...'-Header nicht zurückgibt, versucht es nicht einmal, die tatsächliche Anforderung zu senden. –
@ GünterZöchbauer Ich habe CORS aktiviert. Die Anfrage funktioniert für andere Computer und Browser. – Aarmora