Eu encontrei um problema de domínio cruzado há dois dias e ele pode ser resolvido usando o JSONP. (//www.vevb.com/article/57889.htm)
Eu resolvi recentemente:
1.jsonp.
Solicitação de Ajax, o Datatype é JSONP. Este formulário requer que a solicitação seja ajustada ao formulário que retorna retorno de chamada ([JSON-Object]) no lado do servidor. Se o servidor retornar um objeto JSON normal. Então, ao depurar, o erro "SyntaxError: token inesperado" não capturado será relatado no console do navegador Chrome; O erro "SyntaxError: ausente; antes da declaração" será relatado no console do navegador Firefox.
2.Frame domínio cruzado.
Adicione um elemento iframe à página. Quando você precisar ligar para a solicitação GET, defina o SRC do IFRAME para o URL do GE GET SOITD para iniciar a chamada para a solicitação GET.
A cópia do código é a seguinte:
var url = "http://xxx.xxx.xxx?p1=1&p2=2";
$ ("#iframe"). att ("src", url); // cross-domain, use iframe
O método iframe é mais forte que o JSONP. Além de poder lidar com solicitações HTTP, ele também pode implementar chamadas JS entre domínios.
3. Processamento de atributos SRC dos elementos de script
Os atributos SRC do iframe, IMG, estilo, script e outros elementos podem solicitar diretamente recursos de diferentes domínios. O JSONP é uma implementação simples de recursos de solicitação de domínio cruzado usando tags de script. Portanto, isso é essencialmente o mesmo que o JSONP e também exige que o servidor solicite o formulário de retorno de chamada ...
A cópia do código é a seguinte:
var url = "http://xxx.xxx.xxx?p1=1";
var script = document.createElement ('script');
script.setattribute ('src', url);
document.getElementsByTagName ('Head') [0] .AppendChild (Script);
4. Use Obtenha processamento no servidor.
Para aqueles que não possuem requisitos rígidos para processamento no front-end, eles podem encapsulá-los no servidor e iniciar chamadas no servidor, o que pode resolver o problema de domínio cruzado. Em seguida, com base no fato de a solicitação ser emitida ou o valor de retorno precisa ser obtido, decidiremos se o código usa o modo síncrono ou assíncrono.
A cópia do código é a seguinte:
private estático void createGethtpProPSO (URL da String, Int? Timeout, String UserAgent, CookieCollection Cookies)
{
if (string.isnullorEmpty (url))
{
lançar novo argumentoNulLexception ("URL");
}
var request = webrequest.create (url) como httpwebrequest;
request.method = "get";
if (! string.isnullorEmpty (userAgent))
{
request.UserAgent = userAgent;
}
if (timeout.hasvalue)
{
request.timeout = timeout.value;
}
if (cookies! = nulo)
{
request.cookieContainer = new CookiecOntainer ();
request.cookieContainer.add (cookies);
}
request.BegingetResponse (nulo, nulo); // assíncrono
// Return request.getResponse () como httpwebesponse;
}
5.flash Domínio cruzado
Muito de ponta ==, estude novamente
Resumo: Os 5 métodos acima são maneiras comuns de resolver problemas de domínio cruzado de JS. O último é relativamente alto. Vamos compensar isso depois de estudá -lo claramente.