【问题标题】:XMLHTTPResquest.setRequestHeader() is not adding custom page headersXMLHTTPRequest.setRequestHeader() 没有添加自定义页面标题
【发布时间】: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


【解决方案1】:

XHR 将不接受具有空值的请求标头,事实证明,此块中的 this 指的是 Ajax 调用,而不是 ajax 调用所属的对象。

这个问题可能应该改名为“noob errors occur”。

【讨论】:

    【解决方案2】:

    我最近遇到了类似的问题。尝试使用ajaxSend,而不是使用“beforeSend”。

    【讨论】:

    • 虽然这不起作用,但它帮助我将代码单步执行到正确的位置。原来 XHR 不会设置一个带有空白值的新标头,并且我调用的变量在错误的范围内。谢谢!
    猜你喜欢
    • 2014-10-03
    • 2022-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多