我已经被困在这个问题上好几个小时了,无法找到有效的答案,可能是因为我对这些事情缺乏知识/经验。
我知道由于Same-Origin限制,我无法使用XMLHttpRequest在远程服务器上加载Web服务,但显然这可以通过jsonp数据类型完成并提供回调函数但我真的无法弄清楚如何使它工作。
远程服务器将是我的,所以我并不关心远程服务器可以发回任何恶意javascript代码的可能性。
如果有人能帮助我在http://www.antoinecloutier.com/WebService1.asmx/HelloWorld
获取网络服务的代码,我将不胜感激我在服务器上创建了一个测试页面,网络服务运行正常 - > http://antoinecloutier.com/test.html
现在,我需要能够从其他服务器访问该Web服务。
谢谢!
答案 0 :(得分:3)
您可以通过启用CORS
来设置Cross Domain AJAX Calls using jquery
例如:
jQuery.support.cors = true;
$.ajax({
url: 'http://crossdomainurl',
type: 'GET',
dataType: 'json',
contentType: "application/json; charset=utf-8",
success: function (data) {
WriteResponse(data);
},
error: function (x, y, z) {
alert(x + '\n' + y + '\n' + z);
}
});
要确保跨域正常工作,您必须在Web服务响应中添加Access-Control-Allow-Origin: *
响应标头。
在.NET WCF服务中,您可以将其添加到服务的global.asax中,如下所示,
protected void Application_BeginRequest(object sender, EventArgs e)
{
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin","*");
}
在PHP中,您可以按如下方式修改响应,
<?php header('Access-Control-Allow-Origin: *'); ?>
Note:
发送Access-Control-Allow-Origin
标头允许基本的跨源访问,但调用ASP.NET服务(如ASMX ScriptServices,ASPX页面方法和启用了AspNetCompatibilityRequirements的WCF服务)要求您的站点使用一个额外的CORS标头进行响应:{ {1}}
您可以在Access-Control-Allow-Headers
中配置相同内容,如下所示
web.config