Rumah > Java > teks badan

Bagaimana untuk melaksanakan CORS dalam Reaktor Netty?

王林
Lepaskan: 2024-02-05 11:57:51
ke hadapan
772 orang telah melayarinya
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);
}
Salin selepas log masuk


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()));
}
Salin selepas log masuk

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);
}
Salin selepas log masuk

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!

sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan