我已经在这个问题上困扰了几个小时,无法找到有效的答案,也许是因为我缺乏对此类事情的知识/经验。
我知道由于同源限制,我无法使用 XMLHttpRequest 在远程服务器上加载 Web 服务,但显然这可以使用 jsonp 数据类型并提供回调函数来完成,但我真的不知道如何实现使其发挥作用。
远程服务器将是我的,所以我并不真正关心远程服务器可能发回任何恶意 JavaScript 代码。
如果有人可以帮助我通过 http://www.antoinecloutier.com/WebService1.asmx/HelloWorld 的网络服务获取一些工作代码,我将不胜感激。
我已经在我的服务器上创建了一个测试页面,并且 Web 服务工作正常 --> http://antoinecloutier.com/test.html
现在,我需要能够从不同的服务器访问该 Web 服务。
谢谢!
最佳答案
您可以制作Cross Domain AJAX Calls using jquery
通过启用 CORS
例如:
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 服务响应的响应 header 。
在 .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
header 允许基本的跨源访问,但调用 ASP.NET 服务(例如 ASMX ScriptServices、ASPX 页面方法和启用了 AspNetCompatibilityRequirements 的 WCF 服务)需要您的站点使用一个附加 CORS header 进行响应: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>
关于jquery - 使用 jQuery 调用远程服务器上的 Web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22127442/