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