Por que os CORS não parecem funcionar com o post?
-
23-09-2019 - |
Pergunta
Mozilla é o próprio especificação diz simples GET
ou POST
deve ser nativamente cors sem preencher, mas até agora todo POST
A tentativa que fiz resultou em um OPTIONS
cabeçalho saindo. Quando eu mudo de POST
Para obter o código, envia imediatamente um GET
Solicitação para que a parte do site transversal esteja funcionando bem.
Aqui está uma amostra fraca do que estou fazendo no Firefox:
var destinationUrl = 'http://imaginarydevelopment.com/postURL';
var invocation = new XMLHttpRequest();
if (invocation) {
invocation.open('POST', destinationUrl, true);
//tried with and without this line
//invocation.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
invocation.onreadystatechange = (function Handler() {
if (invocation.readyState == 4)
alert('Request made');
});
invocation.send(/* tried with and without data*/);
}
Aqui está o que eu já havia trabalhado no Chrome e IE:
var destinationUrl = 'http://imaginarydevelopment.com/postURL';
var destination = { url: destinationUrl, type: 'POST', success: AjaxSuccess, error: AjaxError,
dataType: 'text', contentType: 'application/x-www-form-urlencoded'
};
destination.data = { 'rows': rowList, 'token': token };
$jq.ajax(destination);
Solução 2
Bem, eu não sei o que todos os types de conteúdo realmente funcionam, mas text/plain
Faz em todos os 3 navegadores:
var destination = { url: destinationUrl, type: 'POST', success: AjaxSuccess, error: AjaxError,
contentType: 'text/plain'
};
var postData={ 'anArray': theArray, 'token': token };
destination.data=JSON.stringify(postData);
$jq.ajax(destination);
No entanto, até agora, não descobri o que está impedindo a solicitação de fazer qualquer coisa além de executar o método de sucesso, mesmo quando um código 505 é retornado. Adicionando um cabeçalho de resposta de Access-Control-Allow-Origin: *
Resolveu o navegador que não deseja ler os dados de retorno.
Outras dicas
Eu tenho o mesmo problema
https://developer.mozilla.org/en/http_access_control
diz que o Enctype precisa ser texto/simples ou você precisa usar o FX4+ todos os cabeçalhos de acesso devem ser definidos corretamente