所以我在NetBeans中创建了一个Maven项目。部署到Amazon Elastic Beanstalk。我创建了连接到Oracle DB的GET服务(本地完美工作)。
这里是我用来从我的索引访问GET服务的代码,它在本地部署时有效:
方法调用URI:
self.ajax("http://127.0.0.1:8080/webresources/kpis/first/09/09/1994/second/20/02/2017", 'GET').done(function(data) {
alert(data);
});
(在本地运行y add / mavenproject1 / 8080和webresources之间)。
但是,在部署和运行代码时,我无法获得结果。 Chrome在控制台中显示此错误" ERR_CONNECTION_REFUSED" (我想它是因为它在部署时无法找到localhost)。我相信它,因为它无法找到localhost,它将REST视为跨域请求。
我需要将我的FrontEnd连接到后端而不将我的REST暴露给任何人。有人能帮助我吗?
感谢。
答案 0 :(得分:0)
您的前端代码必须调用运行后端代码的主机的IP地址。没有办法解决这个问题。但如果前端后端由同一进程提供服务,那么您可以在ajax调用中使用相对URL:
self.ajax("/webresources/kpis/first/09/09/1994/second/20/02/2017", 'GET')
.done(function(data) {
alert(data);
});
公共呼叫者可以访问GET呼叫,但没有其他HTTP动词可以访问。您可以通过在服务器上设置CORS标头来指定细粒度控制。但是,如果您使用的是ajax,那么您几乎可以将api使用的所有动词暴露给任何和所有呼叫者。
如果您想要更多地控制谁可以调用您的api,您必须查看基于令牌的访问系统,如JWT,其中只有经过身份验证的客户端可以通过将令牌附加到通过请求发送的标头来调用您的api端点。