我们有一个配置了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
问题内容: 以下代码可以正常工作: 如果我取消注释以下行: 启用SSL连接并使用此URL: 则程序失败,并且错误与证书有关。 那么,我该怎么解决这个问题呢? 问题答案: 引起原因:sun.security.validator.ValidatorException:PKIX路径构建失败:sun.security.provider.certpath.SunCertPathBuilderExcept
我可以在我自己的电脑上使用这个程序,但是我不能在服务器上使用。 服务器使用最高权限管理员打开程序。 具有的服务器WCF HTTP激活功能。NET4。5号门开着。 服务器endpoint地址使用"http://localhost",如下所示 endpoint地址="http://localhost"绑定="basicHttpBind"bindingConfiguration="NewBinding0
问题内容: 我在同一服务器上有两个单独的应用程序,其中EmberJS试图对我的后端API进行跨域调用。 我设置了后端API,以允许来自该特定来源的跨域请求。但是,有没有办法避免通过这种设置使用JSONP?在跨域请求发送之前将其阻止。如果不是,那么CORS的意义何在?我实现了哪个服务器端来接受来自JS前端源的请求? 编辑 AJAX请求: 问题答案: 如果启用了CORS,则无需使用JSONP。 如果在
问题内容: 我想将请求参数发送到其他域 我已经知道跨脚本需要JsonP,并且我已经将JsonP与Jquery ajax一起使用了 但我不知道如何使用XMLHttpRequest进行跨脚本 以下代码是我的基本XMLHttpRequest代码。 我想我需要修改,我必须添加解析代码 请给我任何想法 问题答案: JSONP不使用XMLHttpRequests。 使用JSONP的原因是为了克服XHR的跨域限
问题内容: 在一个较大的项目中,我很难获得WCF服务方法来使用JSON参数。因此,我制作了一个较小的测试用例,并产生了相应的行为。如果我调试服务,则可以在服务调用中看到参数值为null。Fiddler确认正在发送JSON,JsonLint确认它有效。 下面的代码带有调试注释。 …及其实施 调用前三个方法中的任何一个都可以正常工作(但没有参数,您会注意到)。使用此客户端代码调用最后一个方法(Tota