我正在构建一个具有两个独立组件的 WebApp:
- Web 访问者将访问的“前端”node.js 应用程序服务器(在 localhost:3099 上运行)
- 管理我的 ORM 并与数据库对话的“后端”Django 服务器(在 localhost:3098 上运行)。Web 访问者根本不会直接与该服务器交互。该服务器只是发布一个 RESTful API,供前端使用。
我将实施安全限制,以防止除前端服务器之外的任何人访问后端的 API。
后端发布的 API 端点之一如下所示:http://localhost:3098/api/myApi/
.
我可以像这样从 curl 成功地访问该 API:curl -X POST -H "Content-Type: application/json" -d '{"myKey1":"myVal1", "myKey2":"myVal2"}' http://localhost:3098/api/myApi/
但是,当我尝试使用 Javascript 从我的前端服务器访问相同的 API 时,我在浏览器的控制台窗口中收到以下错误:
XMLHttpRequest cannot load http://localhost:3098/api/myApi/.
No 'Access-Control-Allow-Origin' header is present on the requested resource.
Origin 'http://localhost:3099' is therefore not allowed access.
为了解决这个问题,采取了以下步骤:
- 我安装了django-cors-headers
- 我添加
'corsheaders'
到我的INSTALLED_APPS
- 我添加
'corsheaders.middleware.CorsMiddleware'
到MIDDLEWARE_CLASSES
上面'django.middleware.common.CommonMiddleware'
- 我宣布了白名单:
CORS_ORIGIN_WHITELIST = ('localhost', '127.0.0.1',)
但是,实施 django-cors-headers 似乎没有任何区别。我仍然收到相同的 CORS 错误。我该如何解决这个问题?