[英]Cross domain ajax request
我想从跨域 URL 获取 HTML 响应页面。
为此,我使用 ajax 请求,
$.ajax({
type: 'GET',
url: "http://wcidevapps.com/salescentral/idisk/0001000383/iDisk",
dataType: "json",
success: function (response) {
$(response).find('li a').each(function () {
listHref.push($(this).attr('href'));
});
}
});
但是在请求之后它不会回复任何结果。
<script src="Scripts/jquery-1.4.1.js" type="text/javascript"></script>
<script type="text/javascript">
function NameAFunctionName() {
$.ajax({
url: 'http://wcidevapps.com/salescentral/idisk/0001000383/iDisk',
type: 'GET',
dataType: 'json',
headers: {
//WRITE IF THEIR HAVE SOME HEADER REQUEST OR DATA
},
crossDomain: true,
success: function (data, textStatus, xhr) {
console.log(data);
},
error: function (xhr, textStatus, errorThrown) {
console.log(errorThrown);
}
});
}
</script>
检查文档: http : //api.jquery.com/jQuery.ajax/
crossDomain (默认:同域请求为假,跨域请求为真)
类型:布尔型
如果您希望在同一个域上强制执行 crossDomain 请求(例如 JSONP),请将 crossDomain 的值设置为 true。 例如,这允许服务器端重定向到另一个域。 (版本添加:1.5)
我怀疑您看到这个问题是因为您请求的页面没有响应 json(p) 响应,而是响应重定向到:
http://wcidevapps.com/salescentral/idisk/0001000383/iDisk/
(注意尾部斜线)
然后返回内容类型:
Content-Type:text/html;charset=ISO-8859-1
编辑:如果您打算跨域检索上述站点的数据,为了通过您的脚本进一步解析,我建议您选择以下之一:
假设 1 :您控制着服务器“ http://wcidevapps.com ”上的页面
在这种情况下,您有两个选择:将 CORS 标头“Access-Control-Allow-Origin: *”添加到响应(并使用 dataType:"html" 配置客户端 ajax() 调用),或者创建一个特殊的 JSON( P) 提供与 JSON 相同数据的页面(带填充)(并像在 OP 中一样配置客户端 ajax() 调用,使用 dataType:"jsonp")
假设2:你是不是在服务器上的网页控制http://wcidevapps.com
在这种情况下,我能想到的唯一选择是在您控制的站点上设置代理。 让该代理将请求/响应“代理”到“ http://wcidevapps.com ”,但将 CORS 标头“Access-Control-Allow-Origin: *”添加到响应中(并配置客户端 ajax() 调用数据类型:“html”)
如果您使用的是 asp.net web 服务,那么您需要将其添加到 webconfig 文件中;
<system.webServer>
<directoryBrowse enabled="true"/>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="Content-Type" />
</customHeaders>
</httpProtocol>
</system.webServer>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.