我是Java SOAP Web服务的新手。最近我使用JAX-WS规范创建了一个Web服务。这部署在我在我的机器中使用的WebLogic服务器中。现在,当我想从另一台服务器上用JavaScript远程机器编写的Web应用程序调用Web服务时,它会给我以下错误。
我还浏览过其他类似帖子,例如this
我使用JavaScript和SoapClient.js库发送请求。
我的调用代码是:
SOAPClient.invoke("http://inhydkvaranasi1:7001/TodoWS/TodoListService",
"getTodos", p1, true, function(data) {
$("#todolist").html('');
if (Object.keys(data).length < 1) {
$("#todolist").html(
"<h4>No Todos Available right now!</h4>");
} else {
Object.keys(data).forEach(
function(key) {
$("#todolist").append(
"<li>" + data[key]["task1"]
+ "(Priority "
+ data[key]["id0"]
+ ") </p>");
});
}
});
XMLHttpRequest()
对象发送的请求在XML响应中没有得到Access-Control-Allow-Origin
的响应头。
我怎么能解决这个问题?这样我的Web服务就可以被不同服务器上不同域的任何用户公开使用。
答案 0 :(得分:0)
查看CORS HTTP headers(来自codingpedia.org):
客户端HTTP请求标头。这些是客户端在发出HTTP请求时可能使用的标头,以便使用交叉共享功能:
- Origin: URI,表示发起请求的服务器。它不包含任何路径信息,只包括 服务器名称
- Access-Control-Request-Headers:在发出预检请求时使用,让服务器知道在什么时候使用哪个HTTP标头 实际请求
- Access-Control-Request-Method:在发出预检请求时使用,让服务器知道在使用时会使用哪种HTTP方法 实际请求
服务器端HTTP响应标头。这些是服务器为访问控制请求发回的HTTP标头:
- Access-Control-Allow-Origin:指定要进行 跨域请求的授权域(您应该包含的域) 客户或“*”如果您希望资源公开且可用于 每个人 - 如果允许凭据,后者不是一个选项 在CORS请求期间
- Access-Control-Expose-Headers:允许允许浏览器访问的服务器白名单标题
- Access-Control-Max-Age:表示可以缓存预检请求的结果多长时间。
- Access-Control-Allow-Credentials:表示服务器是否在CORS请求期间允许凭据
- Access-Control-Allow-Methods: 表示访问资源时允许的方法
- Access-Control-Allow-Headers:用于响应预检请求,以指示在制作时可以使用哪些HTTP标头 实际要求