首页 > 解决方案 > 访问 XMLHttpRequest 的问题已被 CORS 策略(Python/Angular)阻止

问题描述

我在 Angular 应用程序上遇到以下问题,该应用程序目前在网络上运行。用户因此无法登录。而且,已经登录的用户无法正常使用该网站。

错误:从源“后端(域)”访问“前端(域)”处的 XMLHttpRequest 已被 CORS 策略阻止。请求的资源上不存在“Access-Control-Allow-Origin”标头。

我已经看到许多与同一问题相关的帖子。已经实现了应用程序的大部分解决方案。让我详细解释一下。

应用程序详细信息: 前端: Angular 7,已安装 SSL。 后端: Python 3.7,Django Rest 框架,安装了“CorsHeader”插件,CORS_ORIGIN_ALLOW_ALL 为 True,“corsheaders.middleware.CorsMiddleware”位于中间件列表的顶部。 服务器上的 Apache: “rewrite”、“wsgi”和“headers”已启用​​。

最重要的是:实施解决方案后,错误消失了一段时间。但是,几天/几周后,同样的错误再次发生。重新启动服务器将解决此问题。但是,同样的情况会在几天/几周后再次出现。

这个问题的正确解决方法是什么?还是我做错了什么?

Angular 应用程序的控制台日志

注意:我不是从本地/邮递员那里测试的。一切都在本地和邮递员上完美运行。

添加两个请求的屏幕截图。此请求会自动执行两次。第一个请求没有响应。并且,第二个请求有一个 503 响应。

请求无响应

带有 503 响应的请求

标签: angularjspython-3.xangulardjango-rest-frameworkdjango-cors-headers

解决方案


我找到了根本问题,请看你的截图,有Access-Control-Request-Method: GET而且不应该有。

在此处输入图像描述

在您的角度代码中删除以下代码。

request.headers
        .set('Access-Control-Allow-Methods', 'GET')
        .set('Access-Control-Allow-Origin', '*');

希望它能解决你的问题。


推荐阅读