Cross-Domain request when server does NOT support

2019-08-02 05:41发布

我试着现在解决这个问题了几个小时。 我有一个维基网页 ,我想从得到的东西,但它仅支持JSON,甚至没有XML或JSONP。

我什么都试过。 如果我把它作为JSONP我的客户返回错误“语法错误:无效的标签”会导致服务器犯规回击JSONP或JSON的。 如果我添加“回调=?” 到URL和把它作为JSON,返回同样的错误。

这里是我的代码部分(我修改了太多次,没有什么至今工作)

$('#searchBox').keydown(function() {
    $.ajax({
        type: "GET",
        url: "http://leagueoflegends.wikia.com/index.php?callback=?",
        data: {
            action: "ajax",
            rs: "getLinkSuggest",
            format: "json",
            query: "jungl"
        },
        success: function(json){
            alert("Success");
        },
        error: function(){
            alert("Error");
        },
        dataType: "json"
    });
});

更新这里是我的解决方案,它的工作原理:(采用YQL)

    var url = "http://leagueoflegends.wikia.com/index.php?action=ajax&rs=getLinkSuggest&format=json&query=jung"
    url = 'http://query.yahooapis.com/v1/public/yql?q=' + encodeURIComponent('select * from html where url="' + url + '"') + '&format=xml';
    $.ajax({
        type: "GET",
        url: url,
        success: function(text){
            text = text.split("<p>")[1].split("</p>")[0];
            alert(text);
        },
        error: function(){
            alert("Error");
        },
        dataType: "text"
});

Answer 1:

如果远程服务器不支持JSONP或允许CORS,那么你就必须要反弹要求服务器端绕过同源规则。



Answer 2:

你不能这样做跨域AJAX没有JSONP或CORS。

然而可以在后端代码HTTP代理做在后端,而不是用户(= JS)请求。



文章来源: Cross-Domain request when server does NOT support JSONP