Angular 和播放框架从源访问 XMLHttpRequest 已被 CORS 策略阻止

Posted

技术标签:

【中文标题】Angular 和播放框架从源访问 XMLHttpRequest 已被 CORS 策略阻止【英文标题】:Angular and play framework Access to XMLHttpRequest from origin has been blocked by CORS policy 【发布时间】:2021-11-12 11:02:43 【问题描述】:

在我的示例应用程序中,我有一个通过前端(角度 js)执行的获取请求,以从我的 java 后端(播放框架)检索信息。

我的角度要求是:

 function getGeneralInfo() 
        $http(method: 'GET', url: 'sample' + 'generalInfo').
            success(function(response) 
                loadInfo(response);
            ).then(function(response)
                check();
            ).catch(function(e)
                console.log("failure getting info");
            );
    

在我的后端配置文件中添加以下选项:

application.ACCESS_CONTROL_ALLOW_ORIGIN="*"

所以当我执行邮递员的 GET 请求时,我得到了预期的结果,并且一切正常。 但是如果我通过 Chrome 浏览器执行请求,我可以在控制台中看到这个错误:

Access to XMLHttpRequest at 'http://192.168.10.45:9000/sample/generalInfo' from origin 'http://localhost:3001' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.

在我的后端日志中,我可以看到这个堆栈跟踪:

 - Internal server error, for (OPTIONS) [/sample/generalInfo

为什么我在后端看到一个选项请求,而在前端我发送一个获取请求? 我该如何解决这个错误?谢谢

【问题讨论】:

【参考方案1】:

这不是一个错误,它被称为preflight request 浏览器使其获取 CORS 标头,如果没有,则根本不会完成 GET 请求。 因此,您还需要处理所有选项请求并将正确的 CORS 标头放在那里

【讨论】:

感谢您的回答,但这并不能解释为什么即使我以这种方式设置 cors:application.ACCESS_CONTROL_ALLOW_ORIGIN = "*" 错误仍然存​​在

以上是关于Angular 和播放框架从源访问 XMLHttpRequest 已被 CORS 策略阻止的主要内容,如果未能解决你的问题,请参考以下文章

Angular 2:访问组件内html5视频标签的播放和暂停

CORS 策略已阻止从源“localhost”访问“production_api_url”处的 XMLHttpRequest

CORS 策略已阻止从源访问“http://localhost...”处的 XMLHttpRequest:

Ionic3 Angular 不允许从视频播放器(Android 和 iOS)访问本地视频文件

访问 XMLHttpRequest 的问题已被 CORS 策略(Python/Angular)阻止

Angular AWS 被 CORS 策略阻止