Mam następujący kod, który działa działa dobrze:Aurelia Aurelia-fetch-klient i JSON POST
import {inject} from 'aurelia-framework';
import {HttpClient, json} from 'aurelia-fetch-client';
@inject(HttpClient)
export class Items {
heading = 'Items';
apiKey = "";
constructor(http) {
http.configure(config => {
config
.useStandardConfiguration()
.withBaseUrl('https://testme.com/api/')
.withDefaults({
headers: {
'content-type': 'application/json',
'Accept': 'application/json',
'X-Requested-With': 'Fetch'
}
})
});
this.http = http;
}
attach() {
let auth = {
Username:"admin",
Password:"1234"
};
return this.http.fetch('auth', {
method: 'post',
body: JSON.stringify(auth),
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
})
.then(response => response.json())
.then(response => {
this.apiKey = response.APIKey;
console.log(response);
});
Jednakże, jeśli zastąpi linię body: JSON.stringify(auth)
z json(auth)
co wierzę poprawny sposób JSON serialise obiekt używający helpera Aurelia JSON, mój API zgłasza złe żądanie.
Czy jest coś innego niż helper w porównaniu z JSON.stringify?
Czy Twój API w tej samej domenie co swojej stronie? Jeśli tak, spróbuj pozbyć się absolutnej ścieżki (https: //) w swojej funkcji konfiguracyjnej. Widzę, że z jakiegoś powodu treść żądania jest pusta z bezwzględnymi adresami URL, podczas gdy twój przykład działa dobrze, gdy wykonuję żądanie lokalne ... – Mikhail
Żaden interfejs API nie jest pod innym adresem URL, co faktycznie daje mi problem z CORS, które na razie wyłączyłem w Safari. – user1513388
Uruchom proxy sieci Web (na przykład skrzypek) i zobacz, co dokładnie się tam dzieje. Następnie dodaj wynik do swojego pytania. Czy widzisz kiedykolwiek swoją prośbę POST, a może tylko jedną z metodą OPTIONS? – Mikhail