通过jQueryAJAX的SOAP请求
SOAP request through jQuery AJAX
我有一个运行服务的服务器,我想每隔一段时间运行一个对服务的ping请求,这样我就可以知道它什么时候准备好了。
得到以下ping.dat
文件:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:dvt="[private]">
<soapenv:Header />
<soapenv:Body>
<dvt:Ping/>
</soapenv:Body>
</soapenv:Envelope>
以及以下Javascript函数(将包含在setInterval()
函数中):
function doAjax() {
//load request document
$.ajax({
cache: false,
crossDomain: true,
async: true,
dataType: 'xml',
type: 'POST',
data: null,
url: "./ping.dat",
error: function(xhr, sta, err){ alert(err); },
success: function(ret, sta, xhr){
//ping service
$.ajax({
cache: false,
crossDomain: true,
async: false,
processData: false,
contentType: "text/xml; charset='"UTF-8'"",
dataType: 'xml',
data: processXML(xhr.responseText),
type: 'POST',
url: "[private]",
error: function(xhr, sta, err){
alert(err);
},
success: function(ret, sta, xhr){
$('#response').text($.trim(ret));
},
complete: function(xhr, sta){
alert('complete');
},
});
}
});
}
function processXML(text){
var ret = null;
if ((typeof(ret) !== 'undefined')&&(text !== null)&&(text.length !== 0))
ret = $.trim(text.replace(/['n't]+/g, ''));
return ret;
}
当我使用SoapUI调用服务并加载ping请求时,它就工作了。
当我使用JS函数时,浏览器报告:
OPTIONS[private]200(OK)jquery-1.10.2.js:8706
XMLHttpRequest无法加载[private]。请求的资源上不存在"Access Control Allow Origin"标头。原点'http://localhost:8080因此不允许访问。
是什么原因造成的?
消息很清楚:请求的资源上不存在"Access Control Allow Origin"标头。
如果您确实在执行跨域Ajax请求,那么服务器必须使用适当的HTTP头进行响应。浏览器发出OPTIONS HTTP请求,并通过查看接收到的标头来检查服务器是否"批准"访问。如果标头丢失,则浏览器有义务返回错误并禁止对资源的请求。
有关详细信息,请参阅此处:HTTP访问控制(CORS)
SoapUI不像浏览器那样受到同源安全策略的影响,所以从SoapUI ping web服务是有效的。
相关文章:
- 显示IIS上javascript文件(SOAP请求)的XML响应
- 如何使用java脚本或jquery发送跨域SOAP请求
- 无法获取SOAP请求的响应文本
- 通过jQueryAJAX的SOAP请求
- 在 Node-soap (node.js) 中发送带有数组的请求
- 如何使用JavaScript创建带有SOAP消息的请求
- 执行SOAP xml请求
- 对SOAP服务的Preflight OPTIONS请求不起作用
- 将php-soap请求转换为javascript
- 通过 Javascript 向 Azure 上的 WCF Web 服务发出 SOAP 请求
- 必需:用于创建SOAP请求的java工具
- 确保SOAP请求来自'拥有'HTML页面
- 在soap请求中得到NULL而不是字符串值
- c#中的Soap请求
- NodeJS发送HTTPS SOAP请求
- 我在AJAX调用中有一个SOAP信封,请求体显示结果,但页面不显示
- 使用javascript SOAP请求使用WCF服务
- SOAP webservice错误:对预飞行请求的响应未通过访问控制检查'使用SOAPClient.js
- SOAP请求中缺少激活全局自定义操作所需的输入字段
- 如何在acrobatjavascript soap请求前缀命名空间