ຕົວຈັດການ proxy HTTP ຂອງ Reactor Netty ສ້າງອຸໂມງ CONNECT ເຖິງແມ່ນສຳລັບປາຍທາງ HTTP ທົ່ວໄປ. ຖ້າ proxy ທີ່ຕັ້ງໄວ້ຮັບການສົ່ງຕໍ່ HTTP/1.1 ແບບທົ່ວໄປ, Spring WebClient ສາມາດໃຊ້ຕົວເຊື່ອມຕໍ່ອື່ນທີ່ຮອງຮັບ.

ສຳລັບ Spring 6.2 ກັບ API client ຂອງ Jetty 12.0.35 ແລະການເຊື່ອມຕໍ່ Jetty Reactive Streams ທີ່ເຂົ້າກັນໄດ້:

var jetty = new org.eclipse.jetty.client.HttpClient(
    new org.eclipse.jetty.client.transport.HttpClientTransportOverHTTP());
jetty.getProxyConfiguration().addProxy(
    new org.eclipse.jetty.client.HttpProxy("proxy.example", 8080));

var client = WebClient.builder()
    .clientConnector(new JettyClientHttpConnector(jetty))
    .build();

WebClient ແລະ JettyClientHttpConnector ແມ່ນຄລາສຂອງ Spring. ຈັດການການເລີ່ມ ແລະ ການຢຸດ client Jetty ທີ່ໃຫ້ມາຜ່ານວົງຈອນຊີວິດປົກກະຕິຂອງແອັບພລິເຄຊັນ.

proxy HTTP/1.1 ຂອງ Jetty ສາມາດສົ່ງຕໍ່ຄຳຮ້ອງ HTTP/1.1 ທົ່ວໄປໂດຍບໍ່ມີອຸໂມງ ເມື່ອໂປຣໂຕຄອນຂອງປາຍທາງ ແລະ client-proxy ກົງກັນ. ນະໂຍບາຍ requiresTunnel ຂອງມັນໃຊ້ CONNECT ສຳລັບປາຍທາງທີ່ປອດໄພ ແລະ ເສັ້ນທາງໂປຣໂຕຄອນທີ່ບໍ່ເຂົ້າກັນ.

ນີ້ບໍ່ແມ່ນວິທີລຶບ CONNECT ອອກຈາກອຸໂມງ HTTPS ປົກກະຕິ. ຮັກສາ scheme ຂອງປາຍທາງໃຫ້ຖືກຕ້ອງ.

ໃຊ້ addProxy ໃນ Jetty API ທີ່ກ່າວມາ. getProxies ສົ່ງຄືນລາຍການທີ່ບໍ່ສາມາດແກ້ໄຂໄດ້, ດັ່ງນັ້ນວິທີເກົ່າ getProxies().add(...) ບໍ່ແມ່ນອິນເຕີເຟສການແກ້ໄຂປັດຈຸບັນຂອງມັນ.

ສຳລັບປາຍທາງ HTTP ສາທາລະນະໃນເສັ້ນທາງ proxy ສາທາລະນະທີ່ອະນຸຍາດ, ລາຍການ proxy HTTP ໃຫ້ຜູ້ສະໝັກສຳລັບໂຮສ ແລະ ພອດຂອງ proxy Jetty. ອ່ານການຕອບສະໜອງຂອງ proxy ຕົວຈິງເມື່ອປຽບທຽບຕົວເຊື່ອມຕໍ່. ການພິສູດຕົວຕົນ, ນະໂຍບາຍປາຍທາງ ແລະ ປາຍທາງທີ່ບໍ່ສາມາດເຂົ້າເຖິງໄດ້ ຍັງແຍກອອກຈາກການເລືອກ HTTP ທີ່ສົ່ງຕໍ່ ຫຼື CONNECT.

ບົດຄວາມທີ່ກ່ຽວຂ້ອງ