Angular + Django:使用cookie发送POST请求(CORS)

时间:2018-02-09 09:37:07

标签: ajax django angular cookies cors

我正在为客户端使用Angular开发应用程序,为服务器端使用Django开发应用程序。在开发过程中,我在端口8000中运行Django来管理所有API请求,并使用在端口4200上运行的Angular CLI为我的客户端应用程序提供服务。

向Django发送GET请求没有问题但是当我尝试发送包含一些带有会话信息的cookie的POST请求时,它会失败,因为cookie不包含在标题中。

我知道这个"问题的来源"是CORS问题 [read more here]并且它不会成为生产中的问题,因为客户端和服务器应用程序将在同一服务器和端口中运行,但我想知道如何解决这种情况至少是发展。

我尝试使用django-cors-headers module并将选项CORS_ALLOW_CREDENTIALSCORS_ORIGIN_ALLOW_ALL设置为True,但它没有效果。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

最后,我设法完成所有工作。

我认为这是Django的一个问题所以我安装了django-cors-headers模块,但问题是""在浏览器中(实际上不是问题,这是一个安全问题,请参见[此处] [1])。

无论如何,我使用代理规则解决了我的Angular CLI问题,如下所示:

  • 首先,我将请求发送到 http://localhost:8000/api/ ... ,而不是将其发送到 / api / (即发送到我在港口运行的Angular服务器) 4200)。
  • 然后我在Angular项目中添加了一个名为" proxy.conf.json"的文件。具有以下内容: { "/api": { "target": "http://localhost:8000", "secure": false } }
  • 最后,我添加了标志" - proxy-config"到Angular CLI服务器: ng serve --watch **--proxy-config proxy.conf.json**

现在,所有API请求都被发送到端口4200,Angular在内部将它们重定向到Django,避免了CORS问题。

注意:使用此解决方案,我不再需要django-cors-headers模块。