由 Quarkus 提供的带有错误 Content-Type 标头的 Wasm 文件

Posted

技术标签:

【中文标题】由 Quarkus 提供的带有错误 Content-Type 标头的 Wasm 文件【英文标题】:Wasm file served with wrong Content-Type header by Quarkus 【发布时间】:2020-04-18 14:44:34 【问题描述】:

我需要 Quarkus 使用 Content-Type 标头 application/wasm 而不是 application/octet-stream 来提供我的 wasm 文件。我明确使用了 quarkus-undertow 扩展。

首先我尝试使用undertow-handlers.conf 来设置内容类型,如下所示:

path-suffix('.wasm') -> set("oContent-Type", "application/wasm")

对于其他标题,这没有问题,但 Content-Type 似乎被以下处理程序覆盖。

在此之后,我尝试在src/main/resources/META-INF 下添加一个 web.xml,其中包含这样的 wasm 文件的 mime 映射:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         id="WebApp_ID" version="3.1">

    <mime-mapping>
        <extension>wasm</extension>
        <mime-type>application/wasm</mime-type>
    </mime-mapping>
</web-app>

这种方法似乎对 Content-Type 没有任何影响。

在 Quarkus 中覆盖静态文件的 mime 类型映射的正确方法是什么?为什么web.xml配置不起作用?


更新

上面的 web.xml 方法从 Quarkus 1.1.1.Final 开始工作。

【问题讨论】:

【参考方案1】:

您是否明确添加了quarkus-undertow 扩展名?因为默认情况下,它不存在并且由 Vert.x 提供服务,因此您需要添加一个 Vert.x 处理程序。

【讨论】:

是的,我认为我在 Quarkus 更新 0.24.0 中添加了 quarkus-undertow 扩展。我不确定我为什么需要它,可能是因为我使用了 oidc? 据我所知,添加到 web.xml 的 mime 映射完全被 Quarkus Undertow 扩展忽略了。你能在我们的跟踪器中打开一个问题吗?这当然是我们需要看看的。谢谢。 没错,我在github上开了一个bug:github.com/quarkusio/quarkus/issues/6399

以上是关于由 Quarkus 提供的带有错误 Content-Type 标头的 Wasm 文件的主要内容,如果未能解决你的问题,请参考以下文章

quarkus下的分布式ID怎么实现

使用 Django 在 Heroku 上接收带有图像的特定页面的服务器错误 500(由 WhiteNoise 提供静态服务)

Quarkus:如何在微服务之间进行身份验证?

Quarkus 是不是提供任何东西来 gzip 压缩 servlet 响应?

Quarkus 阻塞 grpc vert.x 事件循环错误

如何使用 Quarkus 在 RestEasy 中为 MultipartFormDataInput 提供 swagger 注释