【问题标题】:Which header shall I use? XMLHTTPRequest header or SOAP header?我应该使用哪个标头? XMLHTTPRequest 标头还是 SOAP 标头?
【发布时间】:2012-04-05 17:53:26
【问题描述】:

我有一个包含 SOAP 消息的 XMLHTTPRequest。
我想添加将识别消息并将由 C# Web 服务使用的 guid。
GUID 的目标是识别特定的用户,并且应该护送所有用户请求以在服务器上进行身份验证,此 GUID 是在用户登录时创建的,保存在服务器上,然后对于每个请求,服务器都会检查请求 GUID。

我应该像这样使用 XMLHTTPRequest 标头吗:

setRequestHeader("GUID", this.requestGUID);

或使用 SOAP 标头

<?xml version="1.0"?<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">

<soap:Header>
  <GUID>someGUID...</GUID>
</soap:Header>
...
...
</soap:Envelope>

其中一个有什么优势吗?

谢谢!

【问题讨论】:

    标签: c# javascript web-services soap xmlhttprequest


    【解决方案1】:

    如果您的代码有一个 SOAP 消息,它应该有一个肥皂头。 将 SOAP 消息与其他标头混合可能会破坏 SOAP 堆栈的某些实现。 .NET 中的实现特别严格。

    XMLHTTPRequest 标头用于 restfull 服务,它们背后有不同的原则。

    【讨论】:

      【解决方案2】:

      我认为您的问题的答案主要是品味问题。我个人更喜欢使用setRequestHeader 方法:它在消息中占用的空间更少,并且不依赖于 SOAP(我个人更喜欢 JSON 作为 SOAP)。

      如果我想更多地了解GUID 值的性质,我可能会改变主意。如果 GUID 是数据的属性,那么消息正文将是更好的选择。没有您在问题中发布的更多信息,我留在setRequestHeader 选择。

      【讨论】:

      • GUID 的目标是识别特定用户,并应该护送所有用户请求以在服务器上进行身份验证,此 GUID 在用户登录时创建,保存在服务器上,然后为每个请求检查请求 guid服务器。
      • @DorCohen:听起来更像是 HTTP 标头。它提醒我设置 HTTP 的 Authorization 标头(标头也可以包含任何自定义授权信息)。
      • 你对linkerro的回答有什么看法?这与你的答案相反
      • @DorCohen:我的回答是以“我认为你的问题的答案主要是口味问题”这句话开始的。我真的这么认为。如果您使用 SOAP,您仍然可以使用 Windows 集成安全性或其他基于 HTTP 的身份验证。所以 HTTP 标头的使用并不邪恶(在我看来)。此外,您应该考虑应用程序的后期开发。您是想明确地留在 SOAP 协议中,还是仅将其用于通信并可以想象更改为 OData 或其他?在这种情况下,您应该打开并且也可以使用 HTTP 可能性
      猜你喜欢
      • 2019-03-09
      • 2014-09-20
      • 2012-07-11
      • 2012-04-03
      • 1970-01-01
      • 2013-03-18
      • 1970-01-01
      • 1970-01-01
      • 2019-07-20
      相关资源
      最近更新 更多