跨源资源共享(CORS)策略阻止从源 'http://localhost' 访问位于 '...' 的XMLHttpRequest。

7


我正在尝试使用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>

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

由于CORS策略,无法从 'http://localhost' 访问 'http://127.0.0.1:8080/activiti-rest/service/form/form-data?taskId=21159':跨域访问被拒绝。请求的资源未在响应中包含Access-Control-Allow-Origin头信息。

在这里搜索了很多帖子之后,我添加了以下内容:

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

但是它仍然无法正常工作,出现了错误。我该如何修复这个问题?任何回复都将不胜感激!非常感谢!

后端必须添加 'Access-Control-Allow-Origin': '*' 头信息。 - varun agarwal
但这只是一个演示,我只写了一个 .php 文件。有什么办法可以修复它吗? - Tomato
请问您能否也发布一下您的PHP文件呢? - tarabor
1
警告: jQuery 1.11.1 存在已知的安全更新问题,并且不再受支持。请升级到支持的版本的jQuery。 - Quentin
抱歉,我忘记回复你的答案了!我在Tomcat的web.xml中添加了过滤器,但仍然无法正常工作。目前我正在使用Laravel,并设置了Allow-Origin,它可以正常工作。我真的不知道如何处理ajax。 - Tomato
显示剩余9条评论
1个回答

0

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

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

还请注意:

  • 如@Quentin在评论中指出,您正在使用一个已经5年未更新的、非常过时的jQuery版本。
  • 您在ajax请求中使用的Access-Control-Allow-Origin头是一个响应头,而不是请求头,因此应该由服务器在响应中返回。您不能在请求中使用响应头。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接