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

时间:2019-04-11 07:47:19

标签: 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>

但是当我运行它时,出现了一个错误:

  

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

在这里搜索许多帖子后,我添加了:

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

但是它仍然无法解决该错误。我该怎么解决?
任何答复将不胜感激!
非常感谢你!

1 个答案:

答案 0 :(得分:0)

如果您正在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标头是响应标头,而不是请求标头,因此服务器应在响应中将其返回。您不能在请求中使用响应头。