这个问题在这里已有答案:
我正在尝试使用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-Origin'标头。
在这里搜索了很多帖后,我补充道:
headers:{
'Accept': 'application/json',
'Content-Type': 'application/json',
'Access-Control-Allow-Origin': '*'
},
但它仍然无法解决该错误。我该怎么解决这个问题? 任何回复都会非常感谢! 非常感谢你!
如果您在Tomcat上运行Activiti框架,则可以通过过滤器在Tomcat中配置CORS支持。您需要将此过滤器添加到web.xml文件并配置它以符合您的要求。
检查Tomcat的文档: http://tomcat.apache.org/tomcat-8.0-doc/config/filter.html#CORS_Filter
另请注意:
Access-Control-Allow-Origin
头是响应头,而不是请求头,因此它应该由响应中的服务器返回。您不能在请求中使用响应标头。