ホームページ  >  記事  >  Reactor Netty に CORS を実装するにはどうすればよいですか?

Reactor Netty に CORS を実装するにはどうすればよいですか?

王林
王林転載
2024-02-05 11:57:51637ブラウズ
質問内容

ご存知のとおり、cors標準には有効性をチェックするために最初にオプションリクエストを送信する機能が含まれているため、ハンドラー内でオプションリクエストの処理を解放することにしましたが、返されるブール値が表示されました。オプションリクエストのみを処理し、runon の残りはスキップします。おそらく、cors ヘルパーリクエストを処理する他の方法をご存知ですか?

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

正解


誰かが突然必要になった場合は

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

handle() を次のように置き換えて、問題を解決する http サーバーを作成してみてください:

リーリー

この構成の詳細を表示: https://www.php.cn/link/e2a23af417a2344fe3a23e652924091f

以上がReactor Netty に CORS を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。