spring boot http3:安全连接失败

问题描述 投票:0回答:1

我结账了 spring-boot-http-3-jetty 并运行。 它按预期工作[来自第二个请求的 http-3(h3)] 此外,我想使用带有正文的 POST 请求来测试它,所以我添加了以下 thymeleaf 依赖项

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

为了处理表单请求添加了控制器

package com.example.demo;

import java.io.IOException;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;

import jakarta.servlet.ServletRequest;

@Controller
public class UploadController {
    @GetMapping("/upload")
    public String displayUploadForm(ServletRequest request, Model model) throws IOException {
        System.out.println("displayUploadForm:" + request.getProtocol());
        model.addAttribute("message", "hello from upload controller...");
        return "uploadForm";
    }

    @PostMapping("/handleUpload")
    public String handleFileUpload(@RequestParam("file") MultipartFile file, Model model) {
        model.addAttribute("message", "You successfully uploaded " + file.getOriginalFilename() + "!");
        return "uploadForm";
    }
}

添加了百里香模板

<html>
<body>
    <div th:if="${message}">
        <h2 th:text="${message}"/>
    </div>

    <div>
        <form method="POST" enctype="multipart/form-data" action="/handleUpload">
            <table>
                <tr><td>File to upload:</td><td><input type="file" name="file" /></td></tr>
                <tr><td></td><td><input type="submit" value="Upload" /></td></tr>
            </table>
        </form>
    </div>
</body>
</html>

点击https://demo.local:9002/upload 它显示类似的形式并获取响应标头

alt-svc h3=":9002"; ma=86400; persist=1

但是提交表单后出现以下错误

我在 Firefox 中有导入证书。 还可以在使用 (http-2 和响应标头

RestController
 提供初始请求后使用 
alt-svc h3=":9002"; ma=86400; persist=1

GET 请求与 http-3 一起使用

有时还注意到它的工作 http-2 用于连续请求。

注:

  1. 检查最新的火狐浏览器
  2. Windows 操作系统上的 java 版本 19

是否还有其他配置需要检查才能与 http-3(h3) 一起使用?

提前致谢:-)

java spring-boot jetty http3
1个回答
0
投票

你的代码对我有用。我在 MacOS 上使用最新的 Firefox。

您获取的存储库专门讨论了在 MacOS 上设置项目,而不是在 Windows 上。

注意: 对于 Windows,仅在 Windows Server 2022Windows 11 上支持 HTTP/3。默认情况下未启用。

重要提示: 请遵循此答案 - 如何在 IIS 上启用 HTTP/3?Windows 上启用 HTTP/3


我提供了我在 MacOS 上遵循的步骤。

  • 签出代码后,我执行了命令 -

    brew install --HEAD -s curl/curl.rb
    在我的系统上安装curl。

  • 执行以下命令在PATH上设置curl:

    export PATH="/opt/homebrew/opt/curl/bin:$PATH" >> ~/.zshrc
    source ~/.zshrc
    which curl
    
  • 然后我通过命令

    sudo nano /etc/hosts
    (MacOS)编辑了主机文件。在您的情况下,您必须为 Windows 编辑
    C:\Windows\System32\Drivers\etc\hosts
    以添加以下 IP 和域名。

    127.0.0.1       demo.local
    
  • 现在,我已经添加了您提供的代码库。项目结构。

  • 输出:

© www.soinside.com 2019 - 2024. All rights reserved.