【问题标题】:Access to XMLHttpRequest at '...' from origin 'http://localhost' has been blocked by CORS policy [duplicate]从源“http://localhost”访问“...”处的 XMLHttpRequest 已被 CORS 策略阻止 [重复]
【发布时间】:2019-09-01 18:42:48
【问题描述】:


我正在尝试使用 javascript 演示一个 api 调用以获取 Json 结果。这是我所做的:

<!DOCTYPE html>
<html>
    <head>
    </head>
        <script src="https://canvasjs.com/assets/script/jquery-1.11.1.min.js"></script>
    <body>
        <div class="render-form">
            <script>
                $(document).ready(function() {
                    $.ajax({
                        type: 'GET',
                        headers:{    
                            'Accept': 'application/json',
                            'Content-Type': 'application/json',
                            'Access-Control-Allow-Origin': '*' 
                        },
                        url: 'http://127.0.0.1:8080/activiti-rest/service/form/form-data?taskId=21159',
                        dataType: 'json',
                        success: function (data) {
                            alert(JSON.stringify(data));
                        }
                    });
                })
            </script>
        </div>
    </body>
</html>

但是当我运行它时,我得到了一个错误:

从源“http://localhost”访问“http://127.0.0.1:8080/activiti-rest/service/form/form-data?taskId=21159”处的 XMLHttpRequest 已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:没有“Access-Control-Allow-Origin”标头出现在请求的资源上。

在这里搜索了很多帖子后,我补充说:

headers:{    
    'Accept': 'application/json',
    'Content-Type': 'application/json',
    'Access-Control-Allow-Origin': '*' 
},

但它仍然无法解决该错误。我应该如何解决这个问题?
任何回复将不胜感激!
非常感谢!

【问题讨论】:

  • 'Access-Control-Allow-Origin': '*' 标头必须由后端添加。
  • 但这是一个演示,我只写了 1 个 .php 文件。无论如何要修复它?
  • 你能把你的php文件也发一下吗?
  • 我更新了我的帖子,这是我在一个 php 文件中的所有代码,我使用 xampp 来运行它。
  • 危险:jQuery 1.11.1 有已知的安全更新并且不受支持。升级到受支持的 jQuery 版本。

标签: javascript api tomcat cors activiti


【解决方案1】:

如果您在 Tomcat 上运行 Activiti 框架,您可以通过过滤器在 Tomcat 中配置 CORS 支持。您需要将此过滤器添加到您的 web.xml 文件并对其进行配置以符合您的要求。

查看 Tomcat 的文档:
http://tomcat.apache.org/tomcat-8.0-doc/config/filter.html#CORS_Filter

另外请注意:

  • 正如@Quentin 在评论中指出的那样,您使用的 jQuery 版本已有 5 年历史,而且已经过时了。
  • 您在 ajax 请求中使用的 Access-Control-Allow-Origin 标头是 响应标头,而不是请求标头,因此它应该由服务器在响应中返回。您不能在请求中使用响应标头。

【讨论】:

    猜你喜欢
    • 2023-03-09
    • 2019-11-11
    • 2020-11-11
    • 2020-10-12
    • 2020-01-26
    • 1970-01-01
    • 2021-12-26
    • 2019-10-31
    • 2021-10-05
    相关资源
    最近更新 更多