Il tuo Access-Control-Allow-Origin verrebbe controllato con una richiesta OPTIONS , che è stata rifiutata, quindi XHR non è possibile.
In generale, la risposta di joe è corretta, ma tieni presente che è fondamentale avere il tipo di contenuto della richiesta essendo controllato dal servizio web come application/json . Perché è effettivamente possibile inviare dati JSON validi tramite modulo sfruttando l'attributo enctype="text/plain" .
Funziona con Chrome (per quanto ne so, dipende dal browser come gestire il testo / tipo di contenuto semplice):
<form action="https://example.com" method="post" enctype="text/plain">
<input type="hidden" name='{"foo": "bar", "ignored-by-backend":"' value='"}'>
<button>submit</button>
</form>
Il browser concatena il nome e il valore separati da un carattere = . I dati JSON inviati al servizio web hanno il seguente aspetto:
{"foo": "bar", "ignored-by-backend":"="}
Si noti inoltre che esiste una bozza per consentire enctype="application/json" , tuttavia non viene più mantenuto e per quanto ne so attualmente nessun browser lo implementa . Ma non possiamo sapere se sarà possibile un giorno.