Jquery的跨域问题

时间:2014-07-31 06:52:22

标签: javascript php jquery ajax cross-domain

我正在尝试创建一个Chrome扩展程序,它会从此网址中查找输入词汇表的含义:http://hanviet.org/ajax.php?query=%E6%97%A5&methode=normal

我使用jquery进行了ajax调用但由于跨域问题而出现错误:“No'Access-Control-Allow-Origin'标头出现在请求的资源上。来源'null'是因此不允许访问“。好吧,我是访客,而不是直接向URL发出请求,我需要通过代理页面调用它,如下所示:

$.get("/myproxy.php?query=日&methode=normal", function( data ) {
    alert( "Load was performed." );
});

在进行谷歌搜索之后,还有另一个名为DHC的Chrome扩展程序来发出http请求:https://www.sprintapi.com/dhcs.html。它完美无缺!

我想知道DHC工具是否也通过其代理发送请求,或者还有另一种方式来发出我不知道的直接请求。

谢谢!

2 个答案:

答案 0 :(得分:3)

    $.ajax({
        type: "GET",
        url: 'URL',
        jsonp: 'callback',
        dataType: 'jsonp',
        data: {},
        success: loginSuccess,
        crossDomain: true,
        error: ajaxFailed,
        contentType: 'application/json',
        async: false
    });

    function ajaxFailed(result) {
        alert("Failed: " + result.status + ' ' + result.statusText);
    }

    function loginSuccess(data) {
        alert('Result: ' + data.d);
    }

答案 1 :(得分:1)

如果您在该网站上使用chrome的开发者工具,则在“网络”标签上,您会看到按下send按钮后,它会加载https://www.sprintapi.com/api/proxy中的内容,是的,它应该使用的是代理。

更重要的是,正如你所说的那样, Access-Control-Allow-Origin 不会让他们以我认为的另一种方式做到这一点。