CORS - Java 和 Java 脚本
CORS - Java and Javascript
我在 UI 中遇到了典型的 Cors 错误。出于测试原因,我想完全禁用它。我觉得奇怪的是我得到了 200 并且我可以在 Chrome 调试的响应中看到 "Hello World" 但我得到:
Access to XMLHttpRequest at
'http://localhost:8101/app/services/rest/user' from origin
'http://localhost:8000' has been blocked by CORS policy: No
'Access-Control-Allow-Origin' header is present on the requested
resource.
我有这个豆子
<jaxrs:server id="processServices" address="/">
<jaxrs:serviceBeans>
<ref bean="userServiceBean"/>
</jaxrs:serviceBeans>
</jaxrs:server>
<bean id="userServiceBean" class="com.package.services.UserService"/>
以及基本服务:
@Service("processUserService")
public class UserService {
@GET
@Path("/user")
public String getUser() {
return "Hello World"
}
}
我在 Whosebug 上看到他们告诉我要使用
import java.io.IOException;
import javax.ws.rs.container.ContainerRequestContext;
import javax.ws.rs.container.ContainerResponseContext;
import javax.ws.rs.container.ContainerResponseFilter;
import javax.ws.rs.ext.Provider;
@Provider
public class CORSFilter implements ContainerResponseFilter {
@Override
public void filter(final ContainerRequestContext requestContext,
final ContainerResponseContext cres) throws IOException {
cres.getHeaders().add("Access-Control-Allow-Origin", "*");
cres.getHeaders().add("Access-Control-Allow-Headers", "origin, content-type, accept, authorization");
cres.getHeaders().add("Access-Control-Allow-Credentials", "true");
cres.getHeaders().add("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS, HEAD");
cres.getHeaders().add("Access-Control-Max-Age", "1209600");
}
}
但是还是一样的错误。我调试了,这个方法没有被调用。
我在这里错过了什么??
您需要在您的服务器上注册此提供商。
类似于:
<jaxrs:server id="processServices" address="/">
<jaxrs:serviceBeans>
<ref bean="userServiceBean"/>
</jaxrs:serviceBeans>
<jaxrs:providers>
<ref bean="corsfilterProvider" />
</jaxrs:providers>
</jaxrs:server>
<bean id="corsfilterProvider" class="your.filters.full.name"/>
<bean id="userServiceBean" class="com.package.services.UserService"/>
我在 UI 中遇到了典型的 Cors 错误。出于测试原因,我想完全禁用它。我觉得奇怪的是我得到了 200 并且我可以在 Chrome 调试的响应中看到 "Hello World" 但我得到:
Access to XMLHttpRequest at 'http://localhost:8101/app/services/rest/user' from origin 'http://localhost:8000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
我有这个豆子
<jaxrs:server id="processServices" address="/">
<jaxrs:serviceBeans>
<ref bean="userServiceBean"/>
</jaxrs:serviceBeans>
</jaxrs:server>
<bean id="userServiceBean" class="com.package.services.UserService"/>
以及基本服务:
@Service("processUserService")
public class UserService {
@GET
@Path("/user")
public String getUser() {
return "Hello World"
}
}
我在 Whosebug 上看到他们告诉我要使用
import java.io.IOException;
import javax.ws.rs.container.ContainerRequestContext;
import javax.ws.rs.container.ContainerResponseContext;
import javax.ws.rs.container.ContainerResponseFilter;
import javax.ws.rs.ext.Provider;
@Provider
public class CORSFilter implements ContainerResponseFilter {
@Override
public void filter(final ContainerRequestContext requestContext,
final ContainerResponseContext cres) throws IOException {
cres.getHeaders().add("Access-Control-Allow-Origin", "*");
cres.getHeaders().add("Access-Control-Allow-Headers", "origin, content-type, accept, authorization");
cres.getHeaders().add("Access-Control-Allow-Credentials", "true");
cres.getHeaders().add("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS, HEAD");
cres.getHeaders().add("Access-Control-Max-Age", "1209600");
}
}
但是还是一样的错误。我调试了,这个方法没有被调用。
我在这里错过了什么??
您需要在您的服务器上注册此提供商。
类似于:
<jaxrs:server id="processServices" address="/">
<jaxrs:serviceBeans>
<ref bean="userServiceBean"/>
</jaxrs:serviceBeans>
<jaxrs:providers>
<ref bean="corsfilterProvider" />
</jaxrs:providers>
</jaxrs:server>
<bean id="corsfilterProvider" class="your.filters.full.name"/>
<bean id="userServiceBean" class="com.package.services.UserService"/>