Requisitos:
O domínio A possui a página a.html, que contém um iframe contendo a página b.html do domínio B. Agora precisamos passar o valor de uma caixa de texto na página a.html para b.html através de um botão em a.html . A caixa de texto da página.
Nota: b.html aqui é uma página html e não pode receber valores postados de outros sites, portanto você não pode usar o método de postagem direta para passar valores. Já não é possível postar diretamente? A resposta é sim, é realmente possível, mas b.asp ou b.aspx devem ser atualizados. Como podemos alterar dinamicamente os elementos ou valores da página receptora sem atualizar? (Os projetos locais do IE podem obter acesso entre domínios, mas o acesso entre domínios da rede externa é negado por padrão. Os projetos locais do FireFox e o acesso entre domínios da rede externa são negados.)
Princípio:
O navegador proíbe o acesso entre domínios Acesso aos dados, mas o navegador não proíbe a transferência de pós-valor entre domínios e entre quadros. Podemos postar no domínio A no quadro de uma página no domínio B e, em seguida, usar o quadro da página do domínio B para obter acesso aos dados neste domínio. Na verdade, esse é um pequeno truque em aplicativos HTML e permite o envio de dados entre domínios sem usar outro conhecimento avançado.
Método:
Adicione duas páginas no domínio B para obter acesso a dados entre domínios, post.aspx e main.aspx.
O relacionamento da página é o seguinte. a.html no domínio A contém um quadro. O endereço da página do quadro é main.aspx no domínio B. main.aspx é um conjunto de quadros que contém dois quadros, (frmMain)b.html e (frmPost)post. .aspx.a.html
do domínio A:
http://www.b**.com/main.aspx"> >
Principal do domínio B .aspx:
Primeiro salvamos os dados a serem passados para o domínio B no formato a.html e, em seguida, postamos em post.aspx no domínio B.
Nesse momento, post.aspx recebe o valor e, em seguida, executa o quadro pai neste domínio para acessar b.html.
string cmd = Request.Form["cmd"];
if (null != cmd && string.Empty != cmd)
{
Response.Write(" ");
}
Não é difícil descobrir que pular frames são usados aqui (ou seja, uma camada de quadro é saltada no meio) para obter acesso a dados entre domínios. Ou seja, poste no sobrechassi do quadro.
Postscript:
Este exemplo é apenas uma solução para acesso entre domínios em algumas circunstâncias especiais, que podem ser úteis para você. Por ser um método simples, sua aplicação apresenta muitas limitações. (No entanto, acho que isso é muito semelhante ao ajax. A página não é atualizada e o processamento de dados do lado do servidor também é concluído ^ o ^).
Materiais de texto da web relacionados:
Solução de acesso entre domínios para aplicativos da web
Amigos que desenvolveram Ajax em vários sites sabem que, se estiver no site A, queremos usar Ajax para obter conteúdo específico no site B, se estiver no site A e no site B. não está no mesmo domínio, portanto surgem problemas de acesso entre domínios. O problema de acesso entre domínios do Ajax é um problema comum encontrado pelos desenvolvedores Ajax existentes.
O IE lida com o acesso entre domínios exibindo uma caixa de aviso para lembrar o usuário. Se o usuário incluir o site como confiável ou diminuir o nível de segurança, o IE não o lembrará desse problema.
Quando o FireFox e outros navegadores que não são da Microsoft encontram acesso entre domínios, a solução é negar o acesso.
Algumas pessoas dizem que o IE é um navegador convencional, desde que possa ser usado normalmente. Esta é uma afirmação incorreta. Embora o IE possa lidar com isso, existem pré-requisitos: o usuário se dá ao trabalho de clicar em Sim depois que a caixa de aviso aparece na página (clicar em Não não executará a chamada do Ajax) ou o usuário inclui o. site como um site confiável. Essas duas abordagens são relativamente comuns em aplicativos de sistemas de gerenciamento empresarial, porque os administradores de sistema podem usar meios administrativos para garantir o comportamento do usuário. Mas para o desenvolvimento de sites ou portais na Internet, essa abordagem não funciona.
Encontrei esse problema recentemente. Precisava fazer com que alguns efeitos especiais aparecessem na janela principal após o acesso entre domínios. Procurei algumas informações e encontrei várias soluções viáveis através de tentativas constantes e testes de compatibilidade em diferentes navegadores:
1. Método de proxy da Web. . Ou seja, as solicitações de acesso entre domínios ao site B geradas quando o usuário visita o site A são enviadas para a página designada do site A, e a página completa a interação em vez da página do usuário, retornando assim os resultados apropriados. Esta solução pode resolver a maioria dos problemas de acesso entre domínios que podem ser pensados neste estágio, mas requer que o site A forneça suporte a proxy da Web. Portanto, o site A e o site B devem cooperar estreitamente e cada processo de interação, o servidor. do site A A carga aumenta e o estado da sessão não pode ser salvo em nome do usuário.
2. Método sob demanda. O portal do MYMSN usa esse método, mas o MYMSN não envolve problemas de acesso entre domínios. Controle dinamicamente a geração de tags de script e conclua a chamada para páginas entre domínios modificando o atributo src da tag de script. A falha nesta solução é que o atributo src do script usa o método get para completar a chamada. Se a string passada durante a solicitação for muito grande, ela pode não funcionar corretamente. No entanto, esta solução é muito adequada para portais de agregação.
3. Método iframe. Verifiquei uma postagem sobre acesso entre domínios em Acordando no javaeye. Ele mencionou que havia resolvido o problema de acesso entre domínios usando iframe. De fato, é possível usar iframe para envio e aquisição de dados, mas como a janela pai e a janela filho não podem interagir (no caso de acesso entre domínios, essa interação é rejeitada), o efeito na janela pai não pode ser concluído.
(Encontrei este artigo, adicione o endereço: http://www.javaeye.com/topic/15641 )
4. Método de dump local do usuário: o próprio IE depende das características da plataforma Windows para nos fornecer um método baseado em iframe , A solução de usar memória para “ignorar” é que os dados podem ser transmitidos entre duas janelas através da área de transferência do Windows no cliente. Você só precisa definir o Intervalo no lado que recebe os dados para polling e limpar o Intervalo após obter o. resultado. A independência da plataforma do FF determina que ele não suporta o método da área de transferência, e a vulnerabilidade do plug-in nas versões anteriores do FF foi corrigida, de modo que o FF não pode completar a passagem secreta pela memória. Como o FF não oferece suporte para operações de arquivo (a transferência de dados entre domínios não pode ser concluída por meio de cookies), este método técnico só pode ser usado no IE.
5. Meu próprio método para resolver este tipo de problema: Combinando os métodos anteriores, ao visitar o site A, primeiro solicite ao site B a conclusão do processamento dos dados e, em seguida, obtenha os resultados necessários com base na identificação retornada. As deficiências deste método também são óbvias. A carga do site B aumenta. A vantagem é que a sessão também é mantida e a capacidade de interação entre as páginas do site A e do site B é aprimorada. Mais importante ainda, esta solução atende a todas as minhas necessidades.
Resumindo, entre as opções acima, a mais recomendada é o método sob demanda. Esse método pode resolver a maioria dos seus problemas sem enviar uma grande quantidade de dados.
Endereço da solução de acesso entre domínios para aplicativos da web: http://www.newbooks.com.cn/info/37166.html
http://www.cnblogs.com/lgamoy/archive/2006/11/23/569633.html