【问题标题】:WCF over SSL from non-secure page来自非安全页面的基于 SSL 的 WCF
【发布时间】:2010-08-23 04:11:50
【问题描述】:

我有一个需要在 SSL 上运行的 WCF 服务,我从一个网页(使用 jQuery)调用它,该网页可能是也可能不是安全页面。问题是,如果我从我网站上的安全网页拨打电话,呼叫将完全按照我的预期运行......但是,如果我从我网站上的非安全页面拨打电话,则拨打安全网络服务(使用“https://”;))它返回空数据(通过 Firebug)。有什么我想念的吗?这甚至可能吗?

这是我正在调用的服务的配置(如果需要,我很乐意提供更多内容):

<behaviors>
  <endpointBehaviors>
    <behavior name="AspNetAjaxBehavior">
      <webHttp/>
    </behavior>
  </endpointBehaviors>
</behaviors>
<services>
  <service name="ClientServices.Membership" behaviorConfiguration="ServiceGatewayBehavior">
    <endpoint address="" behaviorConfiguration="AspNetAjaxBehavior" bindingConfiguration="SecureBinding"
     binding="webHttpBinding" contract="ClientServices.Membership" />
  </service>
</services>
<bindings>
  <webHttpBinding>
    <binding name="SecureBinding">
      <security mode="Transport"/>
    </binding>
  </webHttpBinding>
</bindings>

这里是调用服务的代码:

$.ajax({
            url: serviceUrl,
            type: "POST",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            data: '{"review":{"Username":"' + username + '"}}',
            success: function (data) {
                $.log(data);
            },
            error: function (a, b, c) {
                $.log(b);
            },
            cache: false
        });

更新

如果我将服务调用方法更改为“GET”并直接通过 SSL 调用它,它可以正常工作并输出我期望的 jSon。它仅在问题仍然存在的非安全页面内。

【问题讨论】:

  • 您可以发布调用该服务的 jQuery 代码吗?您是从服务中返回 200(返回空数据)还是返回错误?
  • 我为你添加了调用代码。这段代码在其他场景下运行没有问题,只是页面不安全,调用的是安全服务。

标签: wcf


【解决方案1】:

假设站点和服务都在 yourdomain.com,那么我的第一个想法是,当在非安全页面上时,您的浏览器没有附加它为站点域提供的 cookie,因此当它调用服务时,它没有经过身份验证。

您是否使用 Fiddler 查看原始 HTTP 标头数据,更重要的是,在工作页面和不工作页面上这些数据有何不同?

卢克

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-24
    • 1970-01-01
    • 1970-01-01
    • 2016-03-04
    • 1970-01-01
    • 1970-01-01
    • 2010-10-01
    • 2011-11-10
    相关资源
    最近更新 更多