JAX-RS ermöglicht CORS (Access-Control-Allow-Origin) auf Glassfish 4

Arbeite ich in JAVA EE7, JAX-RS 2.0 Glassfish 4 ist mein SERVER.
Ich Will arbeiten, auf CORS aktivieren der Ajax-Anfragen, die kommen von meiner domain.
Ich weiß, dass ich brauche, um meine server aktivieren. Und ich habe es in PHP. wie Sie den folgenden code:

 <?php header("Access-Control-Allow-Origin: *");
 header("Access-Control-Allow-Headers: Authorization");

aber wenn ich versuchte, das gleiche zu tun, ich bekomme immer eine Fehlermeldung, dass
"dies ist ein screenshot".
Also habe ich versucht zu ändern, der Server http-Antwort mit vielen Möglichkeiten...

Und das ist mein code , server-Seite , ich habe ein filer/Anbieter:

@Provider
@CORSBinding 
public class Filter implements  ContainerRequestFilter{
@Override
public void filter(ContainerRequestContext request) throws IOException {
    request.getHeaders().add("Access-Control-Allow-Origin", "*");
    request.getHeaders().add("Access-Control-Allow-Headers", "Authorization"); 
    if (request.getMethod().equals("OPTIONS")) {
        System.out.println("OPTIONS is requested!!!!!!!!!!!!!");
    }
    if (request.getMethod().equals("GET")) {
        System.out.println("GET is requested!!!!!!!!!!!!!");
    }
    if (request.getMethod().equals("POST")) {
        System.out.println("POST is requested!!!!!!!!!!!!!");
    }
    if (request.getMethod().equals("DELETE")) {
        System.out.println("DELETE is requested!!!!!!!!!!!!!");
    }
    if (request.getMethod().equals("PUT")) {
        System.out.println("PUT is requested!!!!!!!!!!!!!");
    }       
}
}

Aber es scheint, wie alle blockiert durch eine "firewall" zur Verfügung gestellt von Glassfish4 server.
hier ist meine einfache code javascript:

<script>
var xhr = new XMLHttpRequest();
xhr.open("POST", "http://127.0.0.1:8080/CV/api/v2/posts");
xhr.setRequestHeader('Authorization', 'a');
xhr.send();
</script>

Ich auch noch einen anderen filter mit der @Prematching Kommentar zu update die Anforderung von OPTIONEN ZU POSTEN ... aber ich habe immer zu verlieren meinem Header, ich habe es innerhalb von (ich meine in POST-Anforderung).

@Provider
@PreMatching
 public class HttpMethodOverrideEnabler implements ContainerRequestFilter {
 @Override
 public void filter(ContainerRequestContext containerRequestContext) throws IOException {
    containerRequestContext.setMethod("POST");

    containerRequestContext.getHeaders().add("Access-Control-Allow-Origin", "*");
    containerRequestContext.getHeaders().add("Access-Control-Allow-Headers","Authorization");
    containerRequestContext.getHeaders().add("Access-Control-Allow-Headers","Authorization");

    String override = containerRequestContext.getHeaders().getFirst( "X-HTTP-Method-Override");
    if (override != null) {
        containerRequestContext.setMethod(override);
    }
}

Wusste ich, dass Glassfish3 hatte nicht den support für CORS und ("https://java.net/jira/browse/GLASSFISH-16049) Sie sagten, dass Sie es beheben werden mit JEE7.
Dies ist die ganze Geschichte...
also wie kann ich das CORS mit diesem JEE7 mit Glassfish server und JAX-RS2.
Vielen Dank im Voraus.

InformationsquelleAutor AndroidLover | 2013-11-25
Schreibe einen Kommentar