当前位置: 首页 > 面试题库 >

使用SSL上的JSONP的WCF服务

宗政财
2023-03-14
问题内容

我们有一个配置了SSL的网站,可托管WCF服务。服务的绑定具有,crossDomainScriptAccessEnabled="true"并且通信使用JSON序列化。

当我们从http请求此服务时,它返回JSONP,但是当使用HTTPS请求该服务时,它仅返回JSON。无论哪种方式我都需要JSONP,请帮忙。

当前配置是这样的:

<webHttpBinding>
        <binding name="webHttpBindingWithJsonP" crossDomainScriptAccessEnabled="true" />
</webHttpBinding>

<behaviors>
            <serviceBehaviors>
                <behavior name="JsonServiceBehaviors">
                    <serviceMetadata httpGetEnabled="true"/>
                    <serviceDebug includeExceptionDetailInFaults="true" />
                </behavior>
            </serviceBehaviors>
            <endpointBehaviors><behavior name="webHttpBehavior">
                <webHttp />
            </behavior></endpointBehaviors>
</behaviors>

<services>
            <service name="Backend.CIService" behaviorConfiguration="JsonServiceBehaviors">
                <endpoint address="" binding="webHttpBinding" 
                          bindingConfiguration="webHttpBindingWithJsonP" contract="Backend.ICIService"
                          behaviorConfiguration="webHttpBehavior"/>
            </service></services>

问题答案:

如果使用此配置会发生什么:

<webHttpBinding>
  <binding name="jsonp" crossDomainScriptAccessEnabled="true" />
  <binding name="jsonpSsl" crossDomainScriptAccessEnabled="true">
    <security mode="Transport" />
  </binding>
</webHttpBinding>

<behaviors>
  <serviceBehaviors>
    <behavior name="JsonServiceBehaviors">
      <serviceDebug includeExceptionDetailInFaults="true" />
    </behavior>
  </serviceBehaviors>
  <endpointBehaviors>
    <behavior name="webHttpBehavior">
      <webHttp />
    </behavior>
  </endpointBehaviors>
</behaviors>

<services>
  <service name="Backend.CIService" behaviorConfiguration="JsonServiceBehaviors">
    <endpoint address="" binding="webHttpBinding" 
      bindingConfiguration="jsonp" contract="Backend.ICIService"
      behaviorConfiguration="webHttpBehavior"/>
    <endpoint address="" binding="webHttpBinding" 
      bindingConfiguration="jsonpSsl" contract="Backend.ICIService"
      behaviorConfiguration="webHttpBehavior"/>
  </service>
</services>

问题是,如果要同时通过HTTP和HTTPS调用服务,则必须提供两个端点-一个端点用于HTTP,另一个端点用于HTTPS。



 类似资料:
  • 问题内容: 我有一个像下面的方法这样的现有服务: 有没有一种简单的方法可以同时允许JSONP调用和JSON(检测它)。这是本地人吗? 问题答案: 更新您的配置,如下所示: 请参阅此处的博客文章,其中提供了创建可跨域访问的wcf服务的演练。 这将使您的服务能够接受来自跨域来源的请求。 在确定是否填充您的响应(jsonp中的p)方面, 感谢@carlosfigueira: 如果使用.Net 4,则JS

  • 问题内容: 以下代码可以正常工作: 如果我取消注释以下行: 启用S​​SL连接并使用此URL: 则程序失败,并且错误与证书有关。 那么,我该怎么解决这个问题呢? 问题答案: 引起原因:sun.security.validator.ValidatorException:PKIX路径构建失败:sun.security.provider.certpath.SunCertPathBuilderExcept

  • 我可以在我自己的电脑上使用这个程序,但是我不能在服务器上使用。 服务器使用最高权限管理员打开程序。 具有的服务器WCF HTTP激活功能。NET4。5号门开着。 服务器endpoint地址使用"http://localhost",如下所示 endpoint地址="http://localhost"绑定="basicHttpBind"bindingConfiguration="NewBinding0

  • 问题内容: 我想将请求参数发送到其他域 我已经知道跨脚本需要JsonP,并且我已经将JsonP与Jquery ajax一起使用了 但我不知道如何使用XMLHttpRequest进行跨脚本 以下代码是我的基本XMLHttpRequest代码。 我想我需要修改,我必须添加解析代码 请给我任何想法 问题答案: JSONP不使用XMLHttpRequests。 使用JSONP的原因是为了克服XHR的跨域限

  • 问题内容: 我在同一服务器上有两个单独的应用程序,其中EmberJS试图对我的后端API进行跨域调用。 我设置了后端API,以允许来自该特定来源的跨域请求。但是,有没有办法避免通过这种设置使用JSONP?在跨域请求发送之前将其阻止。如果不是,那么CORS的意义何在?我实现了哪个服务器端来接受来自JS前端源的请求? 编辑 AJAX请求: 问题答案: 如果启用了CORS,则无需使用JSONP。 如果在

  • 问题内容: 在一个较大的项目中,我很难获得WCF服务方法来使用JSON参数。因此,我制作了一个较小的测试用例,并产生了相应的行为。如果我调试服务,则可以在服务调用中看到参数值为null。Fiddler确认正在发送JSON,JsonLint确认它有效。 下面的代码带有调试注释。 …及其实施 调用前三个方法中的任何一个都可以正常工作(但没有参数,您会注意到)。使用此客户端代码调用最后一个方法(Tota