【发布时间】:2023-04-07 16:04:01
【问题描述】:
我正在尝试使用 AJAX 进行 SOAP 调用(不是跨站点的,所以它不应该遇到代理等问题)
但是,这需要 XHR 中的两个自定义标头,即 SOAPTarget 和 SOAPAction。目前,我正在使用 jQuery 进行 ajax 调用,如下所示:
jQuery.ajax({
url: this.location,
type: 'POST',
data: sm,
dataType: "xml",
contentType: "text/xml",
processData: false,
beforeSend: function(xhr){
xhr.setRequestHeader(
"SOAPTarget",
this.location
);
xhr.setRequestHeader(
"SOAPAction",
this.urn
);
},
success: jQuery.jSOAPClient.success,
error: jQuery.jSOAPClient.error
});
所有代码都按预期执行,但是当我在 Firebug 中查看标头时,它们没有任何变化。
【问题讨论】:
-
进行了一次测试,它在 Safari 和 FF 上对我有用。确保检查“请求标头”。之后,检查服务器端以确保。
-
感谢您的调查!有趣的是,这对你有用。最终的答案是范围界定问题。我不认为你有你运行的测试的副本?
-
附带说明,我一直在使用“header:”标签代替“beforeSend”。
headers: {SOAPAction: requestList[reqItem].SOAPAction, SOAPTarget: requestList[reqItem].SOAPTarget}避免了函数调用的开销。
标签: javascript jquery ajax soap xmlhttprequest