少有人走的路

勇哥的工业自动化技术网站

WCF的REST服务抓到的包为啥是密文的?

勇哥注:

这是因为默认情况下REST是启用了安全消息的。



默认情况下,REST服务的传输数据是安全加密的。

这个时候你用Fiddle抓包,看到resphonse部分是密文无法阅读。

类似下面这样:

CliperData后面就是一大串看不懂的密文数据。

s:Body[u:Id=0]
   e:EncryptedData
       e:CliperData


我们可以在服务端和客户端同时去掉安全项。

要注意的是:wsHttpBinding是可以使用可靠的消息传输的(reliableSession enabled="true")。

但是最重要的一点: 一定要保证在客户端与服务端下面的配置完全一致,否则异常。

 <bindings>
            <wsHttpBinding>
                <binding name="wsbind1_IClientInfoDefByServer">
                    <reliableSession enabled="true" />
                    <security mode="None" />
                </binding>
            </wsHttpBinding>
        </bindings>

或者也可以使用代码方式:

WSHttpBinding wsbind13 = new WSHttpBinding();
wsbind13.Name = "wsbind1";
wsbind13.ReliableSession.Enabled = true;
wsbind13.Security.Mode = SecurityMode.None;
using (ChannelFactory<IClientInfoDefByServer> channelFactory = new ChannelFactory<IClientInfoDefByServer>(wsbind13, 
"


下面看下去掉安全设定的后的效果:


下图是WCF的REST服务的一次Get调用。

这里有一个疑问,为啥一次get调用,Fiddler会抓到两条信息?

有人说:第一次请求是options请求,是一个预检请求,判断通信是否正常,通讯正常则发起正真的请求

对这个结论感觉也不怎么靠谱。

那是不是因为消息先转发到了127.0.0.1:8888(Fiddle的代理端口),再转到实际目标服务器,从而造成这种现象呢?

不过貌似也不是吧,因为两条Host都显示的是192.168.20.200。

所以这个问题暂时勇哥也不明白。


image.png


我们再看resphonse的报文,已经是可以阅读的xml内容了。

image.png


发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2025年12月    »
1234567
891011121314
15161718192021
22232425262728
293031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
文章归档
网站收藏
友情链接

Powered By Z-BlogPHP 1.7.3

Copyright www.skcircle.com Rights Reserved.

鄂ICP备18008319号


站长QQ:496103864 微信:abc496103864