Java - Access-Control-Allow-Origin 多源域?

Doc*_*day 6 java xmlhttprequest http-headers

因此,我已经阅读了有关此问题的其他线程,但尚未找到解决方案。

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

我需要设置两个特定的域...任何帮助表示赞赏。

Pri*_*jee 1

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

 public Response getYourMethod( HttpServletRequest request) 
                             throws Exception, IOException{
  //then your code
 }
Run Code Online (Sandbox Code Playgroud)

现在添加以下内容:

由于您的 API 在“允许来源标头”中查找www.yoursite.com:3000,因此您需要确保将其添加到以下行中:

response.setHeader("Access-Control-Allow-Origin", "www.yoursite.com:3000");
Run Code Online (Sandbox Code Playgroud)

要获得www.yoursite.com:3000您可以使用:

String requestUrl = request.getRemoteAddr() + ":" + request.getRemotePort();
Run Code Online (Sandbox Code Playgroud)

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

request.getRemoteHost().
Run Code Online (Sandbox Code Playgroud)

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

if (requestUrl.equals(yourAPIURL)){
   //allow access
    response.setHeader("Access-Control-Allow-Origin", requestUrl);
}
Run Code Online (Sandbox Code Playgroud)

避免添加,*因为某些浏览器和 API 仍然不允许这样做,并且如果您使用的是浏览器,则可能会被预检请求拒绝。

确保按照帖子中所述正确添加标头和方法。

希望能解决您的问题。