我在本地计算机上创建了一个基于 java 的进程,将其发布为 Web 服务并部署在 azure 上的 Linux VM 上。打开所需的端口并提供私有(private) IP 10.0.0.4 作为托管 Web 服务的端点。
将执行哪个Web服务的进程具有读/写/执行权限。
执行来自 Web 服务的批处理文件以打开其余端点以获取请求。
我在与 Linux VM 相同的网络内的 azure 上创建了另一个 Windows VM。两个虚拟机都能够互相 ping 通。
当我向 webservice API 发送 GET 请求时,收到错误
Http Error 403:The IP address/hostname is not allowed
或者,我从 Windows VM 托管 Web 服务,并使用 localhost 启动端点,在同一 VM 的 Postman 上进行测试,并且运行顺利。
问题: 为什么 Windows VM 上的 postman 无法向 Linux VM 上的 webservice 发送 GET 请求? 当我运行curl http://10.0.0.4时,我明白
curl: (7) Failed to connect to 10.0.0.4 port 80: Connection refused
我在/etc/hosts 文件中添加了 10.0.0.4: 10.0.0.4
请帮忙。
最佳答案
- 如果您的 Web 服务可通过与 Postman 不同的域或端口访问,则配置 CORS 以允许来自不同来源的请求。要接受来自 Postman 的请求,请在 Web 服务的响应中包含正确的 CORS header 。
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, DELETE
Access-Control-Allow-Headers: Content-Type
- 确认您的 Windows 虚拟机的 IP 地址有权访问 Linux 虚拟机上的 Web 服务。
- 验证您的 Web 服务是否在 Linux 虚拟机上正确设置以监听专用 IP 地址 (10.0.0.4)。确保 Web 服务可从虚拟机本身内部使用,并绑定(bind)到正确的 IP 地址和端口。
When I send GET request to webservice API , I receive the error.
只需尝试测试curl 命令来检查Web 服务是否接受Linux VM 本身上的GET 请求。 curl http://localhost
- 尝试通过更改 Linux VM 中的端口进行检查。
关于java - Web服务不接受 postman 的获取请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76414636/