我有2台服务器安装了不同版本的.NET。服务器1具有.NET 1.1,服务器2具有.NET 3.5。
我在.NET 3.5服务器上有一个web服务,以下工作正常:
function selectedDateTime(strDate, strHours, strMinutes) {
$.ajax({
url: 'webservice.asmx/GetCount',
type: 'POST',
data: '{strMeetingDate: "' + strDate + ' ' + strHours + ':' + strMinutes + ':00"}',
contentType: 'application/json; charset=utf-8',
dataType: 'jsonp',
success: function(department) {
console.log("success: " + department.d);
},
error: function(xhr, status, error) {
console.log("status message: " + status);
console.log("error message: " + error);
console.log("xhr message: " + xhr.responseText);
}
});
}
$("#btnTest").click(function(event) {
selectedDateTime("01/07/2013", "13", "00");
});
我想在旧的.NET 1.1服务器上使用相同的脚本,但是无法将web服务移动到旧服务器,因为它是使用.NET 3.5编写的,所以当我尝试时它只是提供了大量的错误消息
所以我想我应该将上面的html / javascript移到旧服务器上并告诉它指向新服务器上的webservice:
我做了,并将上面的脚本更改为指向新服务器:
url: 'http://server2/webservice.asmx/GetCount',
它提供了以下信息:
http://server2/webservice.asmx/GetDayCount 401 (Unauthorized)
http://server2/webservice.asmx/GetDayCount Origin http://server1 is not allowed by Access-Control-Allow-Origin.
XMLHttpRequest cannot load http://server2/webservice.asmx/GetDayCount. Origin http://intranet is not allowed by Access-Control-Allow-Origin.
所以我通过将json
位更改为jsonp
,将脚本再次改为上面,因为我认为jsonp允许跨域?
dataType: 'jsonp',
但这也没有解决问题,我现在得到了:
GET http://server2/webservice.asmx/GetCount?callback=jQuery…2680346152&{strMeetingDate:%20%2201/07/2013%2013:00:00%22}&_=1372680346153 500 (Internal Server Error)
任何人都知道为什么这不起作用,因为当两个文件在同一台服务器上时,web服务和脚本清楚地在新服务器上工作。
答案 0 :(得分:1)
查看this主题。
It is not possible to do an asynchronous POST to a service on another domain, due to the (quite sensible) limitation of the same origin policy. JSON-P only works because you're allowed to insert <script> tags into the DOM, and they can point anywhere.