我有一个WCF/SVC Web服务,通过AJAX进行JavaScript调用.该页面通过https://gate.company.com/MyPage位于DMZ中的SSL代理()访问,然后将请求转发到内部Web服务器(http://myLocalWebServer/MyPage).
经过大量的蠢事和尝试后,我能够使它工作,玩弄参数crossDomainScriptAccessEnabled和Access-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)