使用jQuery在远程服务器上调用Web服务
我一直在这个问题上停留了好几个小时,无法找到有效的答案,也许是因为我缺乏这方面的知识/经验。使用jQuery在远程服务器上调用Web服务
我知道,由于同源限制,我无法使用XMLHttpRequest在远程服务器上加载Web服务,但显然这可以使用jsonp数据类型并提供回调函数来完成,但我真的无法弄清楚如何使它工作。
远程服务器将是我的,所以我并不真正关心远程服务器可能发回任何恶意JavaScript代码的可能性。
我将不胜感激,如果有人可以帮助我在http://www.antoinecloutier.com/WebService1.asmx/HelloWorld
我已经创建了我的服务器和Web服务在测试页面以获取与web服务的一些工作代码工作正常 - >http://antoinecloutier.com/test.html
现在,我需要能够从另一台服务器访问该Web服务。
谢谢!
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);
}
});
为了确保跨域正常工作,你将有一个Access-Control-Allow-Origin: *
响应头添加到Web服务响应:
您可以通过启用CORS
对于如使Cross Domain AJAX Calls using jquery
。
在.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页面方法和WCF s ervices启用AspNetCompatibilityRequirements需要你的网站有一个额外的CORS头回应:Access-Control-Allow-Headers
可以在web.config
配置相同如下,
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="Content-Type" />
</customHeaders>
</httpProtocol>
</system.webServer>
http://pastie.org/private/7jlh6y1vqa1cjv8bjec0g 灿你能帮我用这段代码得到一个有效的例子吗? –
@ newblt123查看更新答案。 –
我已经将Access-Control-Allow-Origin添加到了我的Application_BeginRequest中,但我仍然收到以下错误: XMLHttpRequest无法加载http://www.antoinecloutier.com/WebService1.asmx/HelloWorld。该请求被重定向到“http://antoinecloutier.com/WebService1.asmx/HelloWorld”,该请求被禁止用于需要预检的跨源请求。 以下是代码:http://pastie.org/private/nvtldi38lto21p3vnswglq。 我正在使用ASMX服务而不是WCF,这是一个问题吗? –