我使用Postman扩展创建一个GET请求并获得响应,但如果我使用jQuery发出相同的请求,我会收到一个典型的错误:
XMLHttpRequest无法加载 http://www.rfen.es/publicacion/ranking/resultsBySwimmer.asp?l=020039535&t=&p=0&e=50L-I。 请求中不存在“Access-Control-Allow-Origin”标头 资源。
为什么会这样?
我的javascript代码很简单:
function getTiempo (dni, piscina, prueba) {
$.ajax({
async: false,
type: "GET",
url: "http://www.rfen.es/publicacion/ranking/resultsBySwimmer.asp?l="+dni+"&t=&p="+piscina+"&e="+prueba
})
.done(function (data) {
console.log(data);
return data;
});
}
Postman扩展程序也不在同一个域上,为什么会得到响应?
答案 0 :(得分:8)
只是为了帮助未来寻找这个特定问题的人:为什么POSTMAN有效,我的jQuery不会!
答案很简单,实际上:Chrome扩展程序允许这样做!
常规网页可以使用XMLHttpRequest对象从远程服务器发送和接收数据,但它们受同一原始策略的限制。扩展不是那么有限。扩展可以与其来源之外的远程服务器通信,只要它首先请求跨源权限。