因此,我已经阅读了关于这一点的其他帖子,但没有找到解决方案。
我遇到的问题是因为我设置了"access-control-allow-methods“"true”我不能使用setHeader("Access-Control-Allow-Origin", "*");
我需要设置两个具体的domains...any帮助,非常感谢。
发布于 2018-08-30 22:02:09
public class CorsInterceptor implements ContainerResponseFilter {
@Override
public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext)
throws IOException {
//Cuando se envia la cookie http-only el header 'Access-Control-Allow-Origin' no puede ser *
responseContext.getHeaders().putSingle("Access-Control-Allow-Origin", requestContext.getHeaderString("origin"));
}
}发布于 2016-08-17 04:45:04
您可以做的是将http方法修改为:
public Response getYourMethod( HttpServletRequest request)
throws Exception, IOException{
//then your code
}现在,在这之后添加以下内容:
由于您的接口在Allow Origin Header中查找www.yoursite.com:3000,因此您需要确保将其添加到以下行中:
response.setHeader("Access-Control-Allow-Origin", "www.yoursite.com:3000");要获取可以使用的www.yoursite.com:3000,请执行以下操作:
String requestUrl = request.getRemoteAddr() + ":" + request.getRemotePort();但是,如果浏览器查找localhost,则使用:
request.getRemoteHost().所以你基本上可以有这样的东西:
if (requestUrl.equals(yourAPIURL)){
//allow access
response.setHeader("Access-Control-Allow-Origin", requestUrl);
}避免添加*,因为如果您正在使用浏览器,某些浏览器和应用编程接口仍然不允许这样做,并且可能会被印前检查请求拒绝。
确保您正确地添加了文章中提到的头部和方法。
希望这能解决你的问题。
发布于 2019-02-02 10:24:09
你可以这样做:
private static final String URL = "http://somehost:port"; // URL
private static final String OTHER_URL = "http://otherhost:port"; // OTHER URL
private void setAccessControlAllowOrigin(HttpServletResponse response,
HttpServletRequest request) {
if (URL.equals(request.getHeader("Origin"))) {
response.setHeader("Access-Control-Allow-Origin", URL);
} else if (OTHER_URL.equals(request.getHeader("Origin"))) {
response.setHeader("Access-Control-Allow-Origin", OTHER_URL);
}
}https://stackoverflow.com/questions/38983949
复制相似问题