Heim > Java > Hauptteil

Wie implementiert man CORS in Reactor Netty?

王林
Freigeben: 2024-02-05 11:57:51
nach vorne
764 Leute haben es durchsucht
Frageninhalt

Wie Sie wissen, beinhaltet der CORS-Standard zunächst das Senden von Optionsanfragen, um die Gültigkeit zu überprüfen. Ich habe beschlossen, die Verarbeitung von Optionsanfragen im Handler freizugeben, aber es gibt ein Problem bei der Rückgabe boolescher Werte und nur bei der Verarbeitung von Optionsanfragen. und den Rest im Runon überspringen, kennen Sie vielleicht andere Möglichkeiten, mit CORS-Helferanfragen umzugehen?

public void run() {
    HttpServer.create()
            .host(this.config.getHost())
            .port(this.config.getPort())
            .runOn(eventLoopGroup.newEventLoopGroup())
            .protocol(HttpProtocol.HTTP11)
            .handle((request, response) -> {
                if (request.method().equals(HttpMethod.OPTIONS)) 
                    return response
                        .header("Access-Control-Allow-Origin", "*")
                        .header("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE")
                        .header("Access-Control-Allow-Headers", "Content-Type, Authorization")
                        .sendHeaders();
                else 
                    ???????
            })
            .route(this.provider::run)
            .bindUntilJavaShutdown(Duration.ofSeconds(30), this::onStart);
}
Nach dem Login kopieren


richtige Antwort


falls jemand plötzlich etwas braucht

private @notnull corsconfig getcorsconfig() {
    return corsconfigbuilder.foranyorigin()
            .allownullorigin()
            .allowcredentials()
            .allowedrequestmethods(httpmethod.get, httpmethod.post, httpmethod.delete, httpmethod.put, httpmethod.patch)
            .allowedrequestheaders("content-type", "authorization")
            .build();
}

public void run() {
    httpserver.create()
            .host(this.config.gethost())
            .port(this.config.getport())
            .protocol(httpprotocol.http11)
            .doonconnection(this::handler)
            .route(this.provider::run)
            .binduntiljavashutdown(duration.ofseconds(30), this::onstart);
}

private void addhandler() {
    this.connection.addhandlerlast(new corshandler(getcorsconfig()));
}
Nach dem Login kopieren

Versuchen Sie, handle() wie folgt zu ersetzen, um einen http-Server zu erstellen, der Ihr Problem lösen sollte:

public void run() throws IOException {
    CorsConfig corsConfig = CorsConfigBuilder.forAnyOrigin().disable().build();

    HttpServer.create()
            .host(this.config.getHost())
            .port(this.config.getPort())
            .runOn(eventLoopGroup.newEventLoopGroup())
            .protocol(HttpProtocol.HTTP11)
            .handle(corsConfig)
            .route(this.provider::run)
            .bindUntilJavaShutdown(Duration.ofSeconds(30), this::onStart);
}
Nach dem Login kopieren

Weitere Details zu dieser Konfiguration finden Sie unter: https://www.php.cn/link/e2a23af417a2344fe3a23e652924091f

Das obige ist der detaillierte Inhalt vonWie implementiert man CORS in Reactor Netty?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage