首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java - Access-Control-Allow-Origin Multiple Origin Domain?

Java - Access-Control-Allow-Origin Multiple Origin Domain?
EN

Stack Overflow用户
提问于 2016-08-17 04:31:32
回答 4查看 9K关注 0票数 6

因此,我已经阅读了关于这一点的其他帖子,但没有找到解决方案。

我遇到的问题是因为我设置了"access-control-allow-methods“"true”我不能使用setHeader("Access-Control-Allow-Origin", "*");

我需要设置两个具体的domains...any帮助,非常感谢。

EN

回答 4

Stack Overflow用户

发布于 2018-08-30 22:02:09

代码语言:javascript
运行
复制
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"));
    }
}
票数 3
EN

Stack Overflow用户

发布于 2016-08-17 04:45:04

您可以做的是将http方法修改为:

代码语言:javascript
运行
复制
 public Response getYourMethod( HttpServletRequest request) 
                             throws Exception, IOException{
  //then your code
 }

现在,在这之后添加以下内容:

由于您的接口在Allow Origin Header中查找www.yoursite.com:3000,因此您需要确保将其添加到以下行中:

代码语言:javascript
运行
复制
response.setHeader("Access-Control-Allow-Origin", "www.yoursite.com:3000");

要获取可以使用的www.yoursite.com:3000,请执行以下操作:

代码语言:javascript
运行
复制
String requestUrl = request.getRemoteAddr() + ":" + request.getRemotePort();

但是,如果浏览器查找localhost,则使用:

代码语言:javascript
运行
复制
request.getRemoteHost().

所以你基本上可以有这样的东西:

代码语言:javascript
运行
复制
if (requestUrl.equals(yourAPIURL)){
   //allow access
    response.setHeader("Access-Control-Allow-Origin", requestUrl);
}

避免添加*,因为如果您正在使用浏览器,某些浏览器和应用编程接口仍然不允许这样做,并且可能会被印前检查请求拒绝。

确保您正确地添加了文章中提到的头部和方法。

希望这能解决你的问题。

票数 1
EN

Stack Overflow用户

发布于 2019-02-02 10:24:09

你可以这样做:

代码语言:javascript
运行
复制
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);
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38983949

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档