<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js" type="text/javascript"></script>
<script>
$.get("http://example.com/", function(data) {
alert(data);
});
</script>
ele faz uma solicitação OPTIONS para esse URL e, em seguida, o retorno de chamada nunca é chamado com nada.
Quando não é um domínio cruzado, funciona bem.
O jQuery não deveria apenas fazer a chamada com um <script>
nó e, em seguida, fazer o retorno de chamada quando carregado? Entendo que não poderei obter o resultado (já que é um domínio cruzado), mas tudo bem; Eu só quero que a ligação seja concluída. Isso é um bug ou estou fazendo algo errado?
jquery
xmlhttprequest
http-get
http-options-method
Paul Tarjan
fonte
fonte
Respostas:
De acordo com a MDN ,
fonte
As OPÇÕES são de http://www.w3.org/TR/cors/ Consulte http://metajack.im/2010/01/19/crossdomain-ajax-for-xmpp-http-binding-made-easy/ para um pouco mais de informação
fonte
Se você está tentando postar
Verifique os
JSON.stringify
dados do formulário e envie comotext/plain
.fonte
Não acredito que o jQuery faça naturalmente uma solicitação JSONP quando receber um URL como esse. No entanto, ele fará uma solicitação JSONP quando você informar qual argumento usar para um retorno de chamada:
O script de recebimento depende inteiramente do argumento (que não precisa ser chamado "jsoncallback"), portanto, nesse caso, a função nunca será chamada. Mas, como você declarou que deseja apenas que o script em metaward.com seja executado, isso seria necessário.
fonte
De fato, solicitações AJAX (XMLHttp) entre domínios não são permitidas por motivos de segurança (pense em buscar uma página da Web "restrita" do lado do cliente e enviá-la de volta ao servidor - isso seria um problema de segurança).
A única solução alternativa são retornos de chamada. Isto é: criando um novo objeto de script e apontando o src para o JavaScript do lado final, que é um retorno de chamada com valores JSON (myFunction ({data}), myFunction é uma função que faz algo com os dados (por exemplo, armazená-lo em uma variável).
fonte
Apenas mude "application / json" para "text / plain" e não esqueça o JSON.stringify (request):
fonte
Eu tive o mesmo problema. Minha correção foi adicionar cabeçalhos ao meu script PHP, que estão presentes apenas quando no ambiente de desenvolvimento.
Isso permite solicitações entre domínios:
Isso informa à solicitação de comprovação que não há problema em o cliente enviar os cabeçalhos que deseja:
Dessa forma, não há necessidade de modificar a solicitação.
Se você possui dados confidenciais em seu banco de dados de desenvolvimento que podem vazar, então pense duas vezes sobre isso.
fonte
No meu caso, o problema não estava relacionado ao CORS, pois eu estava emitindo um jQuery POST no mesmo servidor da web. Os dados eram JSON, mas eu havia omitido o parâmetro dataType: 'json'.
Eu não tinha (nem adicionei) um parâmetro contentType, como mostrado na resposta de David Lopes acima.
fonte
Parece que o Firefox e o Opera (testados no Mac também) não gostam do domínio cruzado disso (mas o Safari está bem com isso).
Pode ser necessário chamar um código local do servidor para ondular a página remota.
fonte
Consegui corrigi-lo com a ajuda dos seguintes cabeçalhos
Se você estiver no Nodejs, aqui está o código que você pode copiar / colar.
fonte