gpt4 book ai didi

django - 无法从同一台 AWS EC2 Linux 机器中调用 Django REST API

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:35:36 24 4
gpt4 key购买 nike

我正在开发 Django REST Framework Web 应用程序,因为我有一个 Django 服务器在特定 IP:PORT 的 AWS EC2 Linux 机器中运行。我可以调用一些 URL (API) 来实现特定功能。

在 Windows 机器以及其他本地 Linux 机器(不是 AWS EC2)中,我能够成功调用这些 API 并完美地获得所需的结果。

但问题是当我试图从同一个 EC2 Linux 机器中调用 API 时。

我编写的一段简单代码,用于测试来自同一个 AWS EC2 Linux 机器的一个 API 的调用:

import requests

vURL = 'http://<ipaddress>:<port>/myapi/'
vSession = requests.Session()
vSession.headers = {'Content-Type': 'application/json', 'Accept': 'application/json'}
vResponse = vSession.get(vURL)

if vResponse.status_code == 200:
print('JSON: ', vResponse.json())
else:
print('GET Failed: ', vResponse)

vSession.close()

此脚本返回 GET Failed: <Response [403]> .

一方面,我确信 EC2 实例中没有与身份验证相关的问题,因为使用相同的脚本,我在其他本地 Linux 机器(不是 AWS EC2)和 Windows 机器中得到了实际响应。

似乎从同一台机器调用 API (包括同一台 AWS EC2 机器的相同 IP:PORT) 以某种方式受到 AWS 或防火墙安全策略的限制或其他东西。

可能我必须在 setting.py 中做一些更改。虽然我已经根据我的知识在 settings.py 中合并了所有必需的设置。 ,比如:

  • ALLOWED_HOST
  • CORS_ORIGIN_WHITELIST
  • 提到 corsheadersINSTALLED_APPS列表
  • 提到 corsheaders.middleware.CorsMiddlewareMIDDLEWARE列表

例如,下面是我在 setting.py 中合并的 CORS 设置:

CORS_ORIGIN_ALLOW_ALL = True
CORS_ALLOW_CREDENTIALS = True
CORS_ALLOW_METHODS = ('GET', 'PUT', 'POST', 'DELETE')
CORS_ORIGIN_WHITELIST = (
< All the IP address that calls this
application are listed here,
this list includes the IP of the
AWS EC2 machine also >
)

有没有人对这个问题有任何想法?请帮助我了解此问题的原因以及如何解决此问题。

提前致谢。

最佳答案

根据评论部分的讨论,很明显,入站和出站都可以。因此,请在您的 aws linux 机器本身中检查代理设置,例如 'no_proxy' env 变量等。

检查环境变量的命令:set

因为它允许出站和入站,然后尝试设置 no_proxy 值并附加您的IP 地址

如果这有帮助,请告诉我。

谢谢。

关于django - 无法从同一台 AWS EC2 Linux 机器中调用 Django REST API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49536488/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com