CORS-Problem auf Swagger-UI

Kann mir jemand sagen, warum bekomme ich diese Fehler.

 GET http://127.0.0.1:9000/api-docs/service.json

  200 OK 4ms    swagger-ui.js (line 30261)
  Unable to Load SwaggerUI  /api-docs/(line 83)
  Cross-Origin Request Blocked: The Same Origin Policy disallows 
  reading the remote resource at http://127.0.0.1:9000/api-
   docs/service.json. This can be fixed by moving the resource to the 
  same domain or enabling CORS.
  uncaught exception: Can't read from server. It may not have the 
 appropriate access-control-origin settings.

Ich versuche zu laufen Swagger-UI-port sagen 9090 und Fors-API-Dokumentation unter 9000 und versuchen zum anzeigen der Dokumentation auf der Benutzeroberfläche.

Habe ich die CORS-filter auf die API-Dokumentation server (port 9000) wie folgt.

 FilterHolder cors = swaggerUIContext.addFilter(CrossOriginFilter.class,"/*",EnumSet.of(DispatcherTyp‌ e.REQUEST)); 
cors.setInitParameter(CrossOriginFilter.ALLOWED_ORIGINS_PARAM, "*");       
cors.setInitParameter(CrossOriginFilter.ACCESS_CONTROL_ALLOW_ORIGIN_HEADER, ""); 
cors.setInitParameter(CrossOriginFilter.ALLOWED_METHODS_PARAM, "GET,POST,HEAD"); 
 cors.setInitParameter(CrossOriginFilter.ALLOWED_HEADERS_PARAM, "Content-Type, api_key, Authorization"); 

Die Request-und Response-Header im firefox V33.0

 Response Headers
   Content-Length   428
   Content-Type application/json

   Request Headers
     Accept application/json;charset=utf-8,*/*
     Accept-Encoding    gzip, deflate
     Accept-Language    en-US,en;q=0.5
     Connection keep-alive
     Host   localhost:9000
    Origin  http://localhost:9090
    Referer http://localhost:9090/api-docs/
     User-Agent Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:33.0)       
    Gecko/20100101 Firefox/33.0

Hier ist, wie ich bin Einstellung der CORS auf dem server

       final ResourceHandler swaggerUIResourceHandler = new ResourceHandler();
    swaggerUIResourceHandler.setResourceBase("target/classes/api-docs");
    final ServletContextHandler swaggerUIContext = new ServletContextHandler();
    swaggerUIContext.setContextPath("/api-docs");
    swaggerUIContext.setHandler(swaggerUIResourceHandler);

    FilterHolder cors = swaggerUIContext.addFilter(CrossOriginFilter.class,"/*",EnumSet.of(DispatcherType.REQUEST));
    cors.setInitParameter(CrossOriginFilter.ALLOWED_ORIGINS_PARAM, "*");
    cors.setInitParameter(CrossOriginFilter.ACCESS_CONTROL_ALLOW_ORIGIN_HEADER, "*");
    cors.setInitParameter(CrossOriginFilter.ALLOWED_METHODS_PARAM, "GET,POST,HEAD");
    cors.setInitParameter(CrossOriginFilter.ALLOWED_HEADERS_PARAM, "Content-Type, api_key, Authorization");

    ServletHolder def = new ServletHolder("default", DefaultServlet.class);
    def.setInitParameter("resourceBase","./http/");
    def.setInitParameter("dirAllowed","false");
    swaggerUIContext.addServlet(def,"/");

    HandlerList handlers = new HandlerList();

handlers.setHandlers(new Handler[] { swaggerUIContext, new DefaultHandler() });
server.setHandler(handlers);
möchten Sie vielleicht Lesen Sie mehr über CORS in enable-cors.org oder html5rocks.com/en/tutorials/cors
Ich bin sicher, dass Ihr Firefox hat eine version ? 😉 Bitte erstellen Sie ein Netzwerk-trace mit Hilfe der F-tools von Firefox und zeigt uns den Header
Also dein setup ist nicht die Ursache der richtige Header gesetzt werden. Sehen Sie diese Header auf die andere Instanz ? Vielleicht setzen Sie Sie an der falschen Stelle.
Leider nicht, ich weiß ein wenig über CORS und deswegen habe ich versucht, um Sie in die richtige Richtung. Aber ich weiß nicht, Stolzieren, so brauchen wir jemanden, um deine Frage Lesen, die enthält mehr relevante Informationen
Versuchen Sie OPTIONS zu der Liste der erlaubten Methoden. Auch, was die Ausgabe von curl -I http://127.0.0.1:9000/api-docs/service.json?

InformationsquelleAutor Yahiya | 2015-09-09

Schreibe einen Kommentar