邮递员扩展获得响应,但我的jquery请求没有

Rau*_*ral 12 ajax jquery same-origin-policy cors postman

我使用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;
    });
}
Run Code Online (Sandbox Code Playgroud)

Postman扩展也不在同一个域上,为什么会得到响应?

Bec*_*ari 8

只是为了帮助未来的研究人员寻找这个特定的问题:为什么POSTMAN有效,而我的jQuery却没有!

答案很简单,实际上:允许Chrome扩展程序这样做!

常规网页可以使用XMLHttpRequest对象从远程服务器发送和接收数据,但它们受到相同原始策略的限制.扩展不是那么有限.扩展可以与其来源之外的远程服务器通信,只要它首先请求跨源权限即可.

https://developer.chrome.com/extensions/xhr

  • 有趣的事实#1:如果你在同一个POSTMAN选项卡上打开调试控制台,你将能够执行$ .ajax,请求将起作用,因为你在chrome扩展"context"!! (4认同)