簡體   English   中英

問題Resteasy 3.09 CorsFilter

[英]Problems Resteasy 3.09 CorsFilter

我嘗試使用Resteasy 3.0.9中提供的新CorsFilter 我在本頁底部找到了一個示例: 使用JAX-RS / RESTEasy實現CORS的Ajax請求

如果我在方法getSingletons()Application子類)中定義了這個過濾器,那么我的資源就不再被掃描了。 這意味着將找不到資源並發生以下錯誤:

javax.ws.rs.NotFoundException: Could not find resource for full path Error Occures

在下一頁我找到了一個描述: javax.ws.rs.NotFoundException:找不到完整路徑的資源錯誤Occures

但基本上,此部署選項的作用是掃描應用程序的@ Path,@ Extider等注釋。 原因是JAX-RS將首先分別在重寫的getClasses()和getSingletons()中查找類和對象。 如果然后返回空集,則告訴JAX-RS進行掃描(根據規范)。

所以如果我覆蓋getSingletons()方法,JAX-RS不會進行掃描? 有沒有其他方法來配置此CorsFilter並啟用資源掃描?

“還有另一種方法來配置這個CorsFilter並啟用資源掃描嗎?”

保持掃描的一種方法是實現javax.ws.rs.core.Feature

import javax.ws.rs.core.Feature;
import javax.ws.rs.core.FeatureContext;
import javax.ws.rs.ext.Provider;
import org.jboss.resteasy.plugins.interceptors.CorsFilter;

@Provider
public class CorsFeature implements Feature {

    @Override
    public boolean configure(FeatureContext context) {
        CorsFilter corsFilter = new CorsFilter();
        corsFilter.getAllowedOrigins().add("*");
        context.register(corsFilter);
        return true;
    }  
}

與其他所有@Provider@Path一樣,此功能將被掃描。

僅測試

@ApplicationPath("/api")
public class RestApplication extends Application {
}

C:\\>curl -i http://localhost:8080/api/simple -H "Origin:stackoverflow.com" HTTP/1.1 200 OK Date: Wed, 01 Apr 2015 12:07:22 GMT Access-Control-Allow-Credentials: true Access-Control-Allow-Origin: stackoverflow.com Content-Type: application/octet-stream Content-Length: 15 Server: Jetty(9.2.4.v20141103)

Hello Response!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM