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

Tom*_*ato 5 javascript api tomcat cors activiti


我正在尝试使用 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>
Run Code Online (Sandbox Code Playgroud)

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

CORS 政策已阻止在“ http://127.0.0.1:8080/activiti-rest/service/form/form-data?taskId=21159 ”处访问 XMLHttpRequest来自源“ http://localhost ”:响应预检请求未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。

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

headers:{    
    'Accept': 'application/json',
    'Content-Type': 'application/json',
    'Access-Control-Allow-Origin': '*' 
},
Run Code Online (Sandbox Code Playgroud)

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

frz*_*bor 0

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

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

另请注意:

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