这让我疯了。我有一个输出jsonp的.net 4,wcf服务。它使用内置的web服务器与vs.net工作,但如果我尝试在Windows 7 64bit上的iis7中主机,我没有得到任何响应。
如果我尝试在iis7中托管时导航到svc文件,我会
“此服务的安全设置需要'匿名'身份验证,但不会为承载此服务的IIS应用程序启用。”
如果尝试通过客户端jquery jsonp请求访问我没有得到iis7中托管的服务的任何响应
因此,当在vs.net Web服务器中托管时,服务(web.config)的配置很好(只是不能与iis一起使用)
这是配置
<system.serviceModel>
<behaviors>
<endpointBehaviors>
<behavior name="webHttpBehavior">
<webHttp />
</behavior>
</endpointBehaviors>
</behaviors>
<bindings>
<webHttpBinding>
<binding name="webHttpBindingWithJsonP" crossDomainScriptAccessEnabled="true" />
</webHttpBinding>
</bindings>
<services>
<service name="ServiceSite.CustomersService">
<endpoint address="" binding="webHttpBinding"
bindingConfiguration="webHttpBindingWithJsonP" contract="ServiceSite.CustomersService"
behaviorConfiguration="webHttpBehavior"/>
</service>
</services>
</system.serviceModel>
<system.web>
<compilation debug="true" targetFramework="4.0" />
</system.web>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
该网站必须是ntlm / windows安全的。 我将以下内容添加到web.config绑定部分
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Ntlm"/>
</security>
在浏览svc文件时,我现在获得了经过身份验证的服务不支持跨域javascript回调 真?是不是支持这个真正的jsonp?
答案 0 :(得分:0)
这可能是网站配置错误的症状。转到IIS管理器上的网站身份验证功能,并确保已设置。
答案 1 :(得分:0)
我非常确定,因为JSONP跨域如何解决当今的缺点,您必须始终实施自己的自定义安全系统。
我使用SSL和HMAC安全性进行JSONP跨域身份验证。我自己在服务上进行身份验证。
在执行JSONP时,您无法在请求上设置标头或任何内容,因为它是通过添加标签而不是实际的XMLHTTP请求对象来完成的。