小编Adr*_*ian的帖子

经过身份验证的服务不支持跨域javascript回调.AJAX通过SSL代理查询WCF服务

我有一个WCF/SVC Web服务,通​​过AJAX进行JavaScript调用.该页面通过https://gate.company.com/MyPage位于DMZ中的SSL代理()访问,然后将请求转发到内部Web服务器(http://myLocalWebServer/MyPage).

经过大量的蠢事和尝试后,我能够使它工作,玩弄参数crossDomainScriptAccessEnabledAccess-Control-Allow-Origin.虽然,它仅在身份验证模式设置为false或用户尚未登录时才有效.一旦从您需要登录的页面内进行调用(表单身份验证),它就不再起作用了.我得到的错误消息是:

cross domain javascript callback is not supported in authenticated services
Run Code Online (Sandbox Code Playgroud)

但是,一旦我注销并从非受保护页面进行调用,它确实会再次起作用.

我的服务看起来像这样

namespace MyNameSpace
{
   [ServiceContract(Namespace = "MyNameSpace")]
   [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
   public class Service
   {
      [OperationContract]
       public string[] GetDropDownData(string id)
      {
         List<string> resultList = new List<string>();
         ...
         return resultList.ToArray();
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

JavaScript中的服务调用和回调方法:

function fillDropdwon(dropId){
    jQuery.ajax({
        type: "POST",
        dataType: "jsonp",
        contentType: "application/json; charset=utf-8",
        cache: true,
        url: "Service.svc/GetDropDownData",
        data: '{"dropId":"' + dropId + '"}',
        jsonpCallback: "onDone",
        error: function (a,b,c) { …
Run Code Online (Sandbox Code Playgroud)

asp.net ajax wcf jsonp

6
推荐指数
1
解决办法
5346
查看次数

标签 统计

ajax ×1

asp.net ×1

jsonp ×1

wcf ×1