当 Cors 已经设置时,运行 2 个服务器然后无法访问资源

Posted

技术标签:

【中文标题】当 Cors 已经设置时,运行 2 个服务器然后无法访问资源【英文标题】:Running 2 Server Then Cannot Access Resource When Cors Already Set 【发布时间】:2018-12-11 11:12:00 【问题描述】:

我在 1 台 PC 中使用 2 台服务器,并且服务已经在运行

服务器 1: - 使用 Java Spring Boot 充分休息 - IP 本地主机:8098 - 像这样的源(抱歉不是完整的代码)

    @CrossOrigin(origins = "http://10.100.0.207","http://localhost") @RequestMapping(value = "/getfiles", method = RequestMethod.GET, produces = "application/json")
public Map<String, ArrayList<String>> getFiles() 
    return  fullContent;

服务器 2: - 使用网络服务 xampp - 文件名 testangular.html - IP 本地主机 - 像这样的源(抱歉不是完整的代码)

<div ng-controller="getFiles">
<ul ng-repeat="x in getdata.files">
    <li>x</li>
</ul></div> app.controller('getFiles', function($scope, $http) 
    $http.get("http://localhost:8098/getfiles").then(function (response)
    $scope.getdata = response.data;
        );
    );

两个服务在我的本地 PC 中运行成功,http://localhost/testangular.html,因为我在 java 中设置了 Cors

@CrossOrigin(origins = "http://10.100.0.207","http://localhost") 

现在我用相同的 Wifi 连接了 2 台 PC,并使用 http://10.100.0.207/testangular.html 从不同的 PC 运行,我无法从服务器 1(RestFull)获取数据,但是当我在 PC 服务器中运行 http://10.100.0.207/testangular.html 时,我得到了所有数据

10.100.0.207 是我的本地 ip wifi,其中安装了 2 个服务

谁能解释为什么我无法从服务器 1 获取数据

【问题讨论】:

【参考方案1】:

查看您的配置,您缺少origins 中的端口(origins = "http://10.100.0.207:8098","http://localhost:8098"))您也可以只做所有域默认@CrossOrigin

【讨论】:

对不起,先生,我编辑问题我无法从服务器 2(调用 api)中的服务器 1(我的 java restfull)获取数据是成功的 您是否对$http.get("http://localhost:8098/getfiles") 进行了硬编码,因为这只适用于运行http://localhost:8098/getfiles 的一台电脑 是的,先生,我明白了,谢谢,我改成 10.100.0.207:8098

以上是关于当 Cors 已经设置时,运行 2 个服务器然后无法访问资源的主要内容,如果未能解决你的问题,请参考以下文章

AWS websocket在连接时抛出CORS错误

无服务器 aws httpApi cors 设置

jQuery、CORS、JSON(无填充)和身份验证问题

AWS 无服务器自定义 jwt 授权方 lambda 设置 cors 响应

AngularJS + Nginx CORS

我已经设置了标题然后还有 CORS 策略错误(ReactJS)