2017-06-23 7 views
0

J'ai une page Web qui effectue un POST vers une autre page dans un autre sous-domaine (subdomain1.domain.com -> subdomain2.domain.com) et Je comprends que j'ai besoin de configurer des cors pour permettre cette situation. J'ai fait toutes les configs et cela fonctionne dans CHROME, FIREFOX et IE11 ..CORS: origine introuvable dans l'en-tête access-control-allow-origin (IE11)

mais il y a une exception, seulement dans IE11 SUR MON RÉSEAU CLIENT la demande ne fonctionne pas en retournant "l'origine non trouvée dans access-control-allow-origin En-tête "

Je découvre que cela se produit parce que dans mon réseau client, la requête ne retourne pas l'en-tête SECURITY. Les images ci-dessous peuvent expliquer mieux:

IE11 EXTÉRIEUR MON CLIENT RÉSEAU (Dans le retour CORS rouge du serveur)

IE11 OUTSIDE CLIENT NETWORK

IE11 DANS MON CLIENT RÉSEAU (Il n'y a pas d'en-tête de sécurité retour du serveur)

enter image description here

JAVA CODE SERVEUR CORS FILTRE (Il n'y a pas de retour d'en-tête de sécurité du serveur)

public class CorsFilter implements Filter { 

@Override 
public void init(FilterConfig filterConfig) throws ServletException { 
} 

public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain) throws IOException, ServletException { 

    HttpServletRequest request = (HttpServletRequest) servletRequest; 
    HttpServletResponse resp = (HttpServletResponse) servletResponse; 

    resp.addHeader("Access-Control-Allow-Origin", "https://intranet2.culturainglesa.net"); 
    resp.addHeader("Access-Control-Allow-Credentials", "true"); 
    resp.addHeader("Access-Control-Allow-Methods", "GET,POST"); 
    resp.addHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); 

    // Just ACCEPT and REPLY OK if OPTIONS 
    if (request.getMethod().equals("OPTIONS")) { 
     resp.setStatus(HttpServletResponse.SC_OK); 
     return; 
    } 

    chain.doFilter(request, servletResponse); 
} 

@Override 
public void destroy() { 
    // TODO Auto-generated method stub 

} 

}

+0

Oui, il semble que le serveur n'envoie pas les en-têtes CORS dans la réponse à IE11. La solution consiste à faire en sorte que le serveur envoie les mêmes en-têtes à IE que sur Chrome. Vous devez afficher des informations sur la configuration du serveur et sur le logiciel côté serveur que vous utilisez, sinon personne ne pourra deviner pourquoi le serveur n'envoie pas d'en-têtes CORS. – apsillers

+0

merci, j'ai mis à jour la question avec le filtre de serveur que les cors de retour. Son filtre java est hébergé sur jboss 7.1.1 –

Répondre

0

Le problème était pas côté serveur ou CORS, mais dans IE11 que ne pas envoyer des informations d'identification dans ce situation particulière par AJAX:

SITE INTERNET ZONE -> ZONE dU SITE INTRANET

après le changement de ces deux sous-domaines pour être sur ZONE TRUSTED, le problème a été résolu.

c'est la question qui me aider à résoudre:

Access denied in IE 10 and 11 when ajax target is localhost