gpt4 book ai didi

cors - 如何在 Vespa 中添加自定义过滤器包以启用 CORS?

转载 作者:行者123 更新时间:2023-12-01 13:17:07 25 4
gpt4 key购买 nike

我已经关注了问题 Enable CORS in vespa并编写并构建了一个新的自定义“filter-bundle”包,其中包含 RequestFilter 和 ResponseFilter,它添加了启用 CORS 的 header 。这是我用于构建 bundle 的 pom.xml 文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.yahoo.bundle</groupId>
<artifactId>filter-bundle</artifactId>
<version>1.0-SNAPSHOT</version>

<dependencies>
<dependency>
<groupId>com.yahoo.vespa</groupId>
<artifactId>container</artifactId>
<version>6.297.80</version>
<scope>provided</scope>
</dependency>
</dependencies>

<build>
<plugins>

<plugin>
<groupId>com.yahoo.vespa</groupId>
<artifactId>vespa-application-maven-plugin</artifactId>
<!-- Zip the application package -->
<version>6.297.80</version>
<executions>
<execution>
<goals>
<goal>packageApplication</goal>
</goals>
</execution>
</executions>
</plugin>

<plugin>
<groupId>com.yahoo.vespa</groupId>
<artifactId>bundle-plugin</artifactId>
<version>6.297.80</version>
<extensions>true</extensions>
<configuration>
<attachBundleArtifact>true</attachBundleArtifact>
<bundleSymbolicName>filter-bundle</bundleSymbolicName>
<bundleVersion>1.0.2</bundleVersion>
</configuration>
</plugin>

</plugins>
</build>



</project>

我将构建的 jar 包添加到我的“主”应用程序包的/components 目录中,并在我的 services.xml 文件中按照链接 https://docs.vespa.ai/documentation/jdisc/http-server-and-filters.html 进行了建议的更改。我将以下 HTTP 标记添加到我的 services.xml 文件中。

<http>
<filtering>
<filter id='request-filter' class='com.yahoo.bundle.MyRequestFilter' bundle="filter-bundle" />
<filter id='response-filter' class='com.yahoo.bundle.MyResponseFilter' bundle="filter-bundle" />

<request-chain id='request-chain'>
<filter id='request-filter' />
<binding>http://*/*</binding>
</request-chain>

<response-chain id='response-chain'>
<filter id='response-filter' />
<binding>http://*/*</binding>
</response-chain>
</filtering>
<server port="8080" id="main-server" />
</http>

这里“MyRequestFilter”和“MyResponseFilter”是我的过滤器包中的类名(在放置在 application/components 目录中的内置过滤器包 jar 中)。

执行这些步骤后出现错误,过滤器包的 jar 文件中我的 MANIFEST.MF 文件中缺少一些 header ,如“Bundle-SymbolicName”、“Bundle-ManifestVersion”。所以我编辑了 MANIFEST.MF 文件以在 https://docs.vespa.ai/documentation/bundle-plugin.html 之后添加所需的 header Edit-1:添加“container-plugin”行正确生成了 MANIFEST.MF 文件

但是,在使用 jar 文件中的上述更改成功构建我的应用程序之后,我仍然无法在我对 Vespa 的请求或响应中看到添加的 header ,并且仍然收到 CORS 被禁用的错误胡蜂。

最佳答案

应该没有必要手动编辑 bundle manifest,因为它是由 bundle-plugin 生成的。您目前正在构建一个普通的 jar 而不是一个包。请将以下内容添加到您的 pom 中 version 标记的正下方:

<packaging>container-plugin</packaging>

现在它将被构建为一个包,并且 list 将被正确生成。

您可以删除 vespa-application-maven-plugin,因为它只需要用 services.xml 等创建应用程序包。如果您愿意,可以将过滤器类放入主应用程序以及您可能拥有的任何其他 Java 类,并完全跳过额外的包。

关于cors - 如何在 Vespa 中添加自定义过滤器包以启用 CORS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53864672/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com