Pergunta

Eu tenho vindo a testar o navegador PS3 (NetFront) com componentes Flash embutidos em uma página web e não parece ser um bug bastante grave com a maneira que todos os pedidos de flash são emitidos. O navegador está adicionando um referencial (referer) e assim é o Flash player resultando em cabeçalhos duplicados. Esta é realmente OK, se os cabeçalhos de referência são os mesmos, porém eles não são, e como resultado, a solicitação é parado por http.sys em W2k8. Este é um grande problema para mim como eu tenho um componente Flash que precisa chamar serviços web, a fim de função.

Existe alguma maneira que podemos filtrar ou permitir que essas solicitações através, possivelmente tirando os cabeçalhos duplicados ao longo do caminho.

Algumas soluções que temos pensado, mas são ou abaixo do ideal ou não é possível com o nosso desenvolvimento e ambientes vivos são:

  • A adição de um proxy na frente dos servidores para limpar o pedido.
  • Fixação do pedido, nossos balanceadores de carga. Isso pode funcionar em nosso ambiente ao vivo, mas não no dev. Também usando um balanceador de carga para executar esta operação é má prática, a nossa equipe de operações não estaria satisfeito:)
  • Enviar todos os dados para o Flash durante a inicialização via flashvars. Possivelmente fazendo quaisquer atualizações / retornos de chamada via Javascript. Isso sente-se confuso e é exigiria código personalizado significativo para uma plataforma.
  • evitar que o navegador ou Flash de enviar cabeçalhos de referência. Isso seria aceitável, no entanto, não parece ser uma maneira de permitir isso em Flash ou NetFront.

Para referência o seguinte pedido irá reproduzir o problema (copiar e colar em Fiddler ou outra ferramenta, eu estou supondo que você está executando IIS7, W2K8 como somos). Você deve obter uma resposta 400 Bad Request.

GET / HTTP/1.1
Host: localhost
Referer: http://localhost/NetFrontBrowser/
Referer: http://localhost/Flash/

Muitos agradecimentos

Foi útil?

Solução

stmedit do Windows DDK "demonstra a substituição de um padrão de cadeia para uma conexão Transmission Control Protocol (TCP) usando o Windows Filtering Platform (WFP)".

Um pouco de hackery adicional transforma-lo em um FSM que pode despejar todos, mas o primeiro string de referência.

Outras dicas

Se eu numerar estes 1-4, eu diria que 2 faz o melhor sentido para o seu ambiente ao vivo, enquanto 3 pode ser algo que você precisa fazer se o seu ambiente de desenvolvimento não pode semelhante corresponder ao seu ambiente ao vivo. Número 1 e 2 são muito semelhantes uma vez que uma carga balanceador é basicamente um proxy reverso. Número 4, como você apontou, parece impossível sem esperar pela Sony para atualizar o navegador e plugins que eles estão usando, o que parece improvável, uma vez que provavelmente cultivada-lo para fora e têm pouco controle sobre ele em primeiro lugar (como o tipo de firmware no meu coreano TV feita é feita em Palo Alto, e levou 10 meses para cumprir a GPL devido ao não ser capaz de se comunicar bem o suficiente).

Apache tem as mod_headers módulo. Isso resolveria o problema, mas se você tem que usar http.sys, então gostaria de tentar encontrar algo equivalente a mod_headers. Talvez alguém tem mod_headers portado para http.sys?

Também gostaria de avaliar a reescrita de URL. Eu sei que isto é sobre cabeçalhos e não URLs, mas talvez o URL reescrever módulo de http.sys (se existir) sabe sobre cabeçalhos.

Eu assumo que os mod_headers ou equivalente mod_rewrite para http.sys pode lidar com a solicitação antes http.sys Barfs.

Boa sorte!

Adicionando este ao HTML vai parar a referência de ser usado se não for necessário.

<meta name="referrer" content="never">

Por favor, votar-se, se bem da resposta!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top