Question

J'ai configuré filtre d'origine croix de la jetée, mais je continue à obtenir l'erreur suivante. Est-ce que quelqu'un sait ce qui ne va pas et comment y remédier? Ci-dessous, le message d'erreur est mon descripteur de priorité (par exemple supplémentaire web.xml)

Erreur:

Origin http://localhost:8090 is not allowed by Access-Control-Allow-Origin.

Priorité Description:

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
 <filter>
   <filter-name>cross-origin</filter-name>
   <filter-class>org.eclipse.jetty.servlets.CrossOriginFilter</filter-class>
   <init-param>
       <param-name>allowedOrigins</param-name>
       <param-value>*</param-value>
   </init-param>
   <init-param>
       <param-name>allowedMethods</param-name>
       <param-value>*</param-value>
   </init-param>
   <init-param>
       <param-name>allowedHeaders</param-name>
       <param-value>*</param-value>
   </init-param>
 </filter>
 <filter-mapping>
     <filter-name>cross-origin</filter-name>
     <filter-pattern>/*</filter-pattern>
 </filter-mapping>
</web-app>

tête de demande

Accept:*/*
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Access-Control-Request-Headers:Origin, Content-Type, Accept
Access-Control-Request-Method:POST
Connection:keep-alive
Host:localhost:8080
Origin:http://localhost:8090
Referer:http://localhost:8090/home
User-Agent:Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.8 (KHTML, like Gecko) Chrome/17.0.942.0

tête de réponse

Allow:POST,GET,OPTIONS,HEAD
Content-Length:0
Date:Wed, 30 Nov 2011 02:13:21 GMT
Server:Jetty(7.5.4.v20111024)
Était-ce utile?

La solution

Aloha,

Je me suis battu ce pendant un certain temps aussi bien, et a constaté que les besoins des noeuds finaux à:

<filter-mapping>
    <filter-name>cross-origin</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

PAS

<filter-mapping>
     <filter-name>cross-origin</filter-name>
     <filter-pattern>/*</filter-pattern>
</filter-mapping>

Voici le lien que j'ai trouvé pour me aider: wiki.eclipse.org/Jetty/Feature / Cross_Origin_Filter

Après avoir mis à jour mon fichier web.xml et redémarré le serveur de la jetée, j'ai pu faire une demande de domaine croisée utilisant les appels ajax jQuery.

Rob

Autres conseils

je suis tombé quand faire des appels crossdomain à des applications Web déployées à GAE. Vous pouvez ajouter un en-tête explicite à vos réponses Servlet (S), comme:

public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException 
{
    res.addHeader("Access-Control-Allow-Origin", "*");
    ...
}

et assurez-vous que vous disposez d'un fichier de stratégie crossdomain.xml à la racine de votre WAR, comme:

<cross-domain-policy xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:noNamespaceSchemaLocation="http://www.adobe.com/xml/schemas/PolicyFile.xsd">
<allow-access-from domain="*"/>
</cross-domain-policy> 

HTH.

J'ai eu le même problème avec ActiveMQ Ajax au sein Jetty Web Server. Mon problème était que les en-têtes autorisés champ n'accepte pas un caractère générique sous forme de « * » .

Pour obtenir ActiveMQ Ajax au travail, je dois aussi ajouter le « Options » Méthode aux allowedMethods.

Filtre Cross-Origin de web.xml:

<filter>
   <filter-name>cross-origin</filter-name>
   <filter-class>org.eclipse.jetty.servlets.CrossOriginFilter</filter-class>
   <init-param>
       <param-name>allowedOrigins</param-name>
       <param-value>*</param-value>
   </init-param>
   <init-param>
       <param-name>allowedMethods</param-name>
       <param-value>GET,POST,OPTIONS,DELETE,PUT,HEAD</param-value>
   </init-param>
   <init-param>
       <param-name>allowedHeaders</param-name>
       <param-value>origin, content-type, accept, authorization</param-value>
   </init-param>
 </filter>
 <filter-mapping>
     <filter-name>cross-origin</filter-name>
     <url-pattern>*</url-pattern>
 </filter-mapping>

Pour moi (jetée version 8.1.5.v20120716) que ces lignes dans 'web.xml' aide:

<filter>
    <filter-name>cross-origin</filter-name>
    <filter-class>org.eclipse.jetty.servlets.CrossOriginFilter</filter-class>
    <init-param>
        <param-name>allowedOrigins</param-name>
        <param-value>*</param-value>
    </init-param>
    <init-param>
        <param-name>allowedMethods</param-name>
        <param-value>GET,POST,DELETE,PUT,HEAD</param-value>
    </init-param>
    <init-param>
        <param-name>allowedHeaders</param-name>
        <param-value>origin, content-type, accept</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>cross-origin</filter-name>
   <url-pattern>/*</url-pattern>
</filter-mapping>

I niveau AVONS du journal des modifications à DEBUG et obtenir des informations (comme 'GET, POST, DELETE, PUT, HEAD' et 'origine, type de contenu, accepter') de journal de la console de la jetée. Par exemple:.

DEBUG CrossOriginFilter: 359 - Méthode SUPPRIMER est parmi les méthodes permises [GET, POST, DELETE, PUT, HEAD] 19: 14: 28413

DEBUG CrossOriginFilter: 389 - En-têtes [origine, type de contenu, accepter] ne sont pas parmi les en-têtes autorisés [*]

Alors j'ai vérifié résultat avec .ajax $ ({url: 'anotherHost', tapez: 'DELETE', ..})

Il vient d'ouvrir un rapport de bogue après avoir perdu beaucoup de mon temps:

https://bugs.eclipse.org/bugs/show_bug.cgi? id = 384847

Il faut aussi conscient du fait que jokers dans les valeurs des paramètres ne sont généralement pas pris en charge. (Ie. Les en-têtes autorisés)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top