Rumah  >  Artikel  >  Bagaimana untuk melaksanakan CORS dalam Reaktor Netty?

Bagaimana untuk melaksanakan CORS dalam Reaktor Netty?

王林
王林ke hadapan
2024-02-05 11:57:51758semak imbas
Kandungan soalan

Seperti yang anda tahu, piawaian kors termasuk pada mulanya menghantar permintaan pilihan untuk menyemak kesahihan, saya memutuskan untuk melepaskan pemprosesan permintaan pilihan dalam pengendali, tetapi terdapat masalah untuk mengembalikan nilai boolean dan hanya memproses permintaan pilihan, dan melangkau yang lain dalam runon, mungkin anda tahu cara lain untuk mengendalikan permintaan pembantu kors?

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);
}

jawapan betul


jika ada yang tiba-tiba memerlukan

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()));
}

Cuba ganti handle() seperti ini untuk mencipta pelayan http yang sepatutnya menyelesaikan masalah anda:

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);
}

Lihat butiran lanjut konfigurasi ini: https://www.php.cn/link/e2a23af417a2344fe3a23e652924091f

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan CORS dalam Reaktor Netty?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam