【问题标题】:Cross site Ajax JSON call跨站 Ajax JSON 调用
【发布时间】:2012-10-04 20:40:02
【问题描述】:

我在处理要为其创建搜索功能的网站时遇到了很大的麻烦。这是一个在线游戏中的排名,但是搜索选项对于我的联盟来说是不够的。 因此,我想进行 ajax 调用以获取所需的信息,但根据我的尝试有几个问题:

  • 如果我尝试将 ajax 调用作为 JSONP 调用进行,则会在我的 firebug 中出现“无效标签”错误。我已经知道发生此错误是因为检索到的数据未包装到函数调用中。尽管我确实看到了背后的 JSON 数据,但为什么它对我来说如此遥远?
  • 如果我尝试使用 jQuery 进行简单的 getJSON 调用,我会收到几个错误,这些错误都指向跨站点脚本的问题。 JSON 数据在另一台服务器上,所以这是个大问题...

我个人能够直接正确打开网站(如 www.onlinegamesite.com/api/?foo=foo&boo=false),如果我能够在浏览器中打开它,为什么我无法打开它纯粹以编程方式工作?

我希望你有想法如何处理它,WWW上有太多关于它的帖子,经过一天的寻找和一次又一次的尝试,我终于希望在这里得到帮助。

编辑:我当前的代码是这个:(尝试 JSONP)

$(document).ready(function() {
var data = $.ajax({
    url: "http://lastchaos.gamigo.com/de/ranking/api/?tabNam=realm_4&CurrLang=de&CurrCategorie=user&sEcho=1&iColumns=6&sColumns=&iDisplayStart=0&iDisplayLength=1025&sSearch=&bRegex=false&sSearch_0=&bRegex_0=false&bSearchable_0=true&sSearch_1=&bRegex_1=false&bSearchable_1=true&sSearch_2=&bRegex_2=false&bSearchable_2=true&sSearch_3=&bRegex_3=false&bSearchable_3=true&sSearch_4=&bRegex_4=false&bSearchable_4=true&sSearch_5=&bRegex_5=false&bSearchable_5=true&iSortingCols=1&iSortCol_0=0&sSortDir_0=asc&bSortable_0=true&bSortable_1=true&bSortable_2=true&bSortable_3=true&bSortable_4=true&bSortable_5=true",
    dataType: "jsonp"
    });
});

我之前的最后一次尝试是一些简单的 JSON 调用,但我无法正确调试它(在 IE 没有适当的调试工具时无法停止 FF 过滤 XSS):

$(document).ready(function() {
var data = $.getJSON({
    url: "http://lastchaos.gamigo.com/de/ranking/api/?tabNam=realm_4&CurrLang=de&CurrCategorie=user&sEcho=1&iColumns=6&sColumns=&iDisplayStart=0&iDisplayLength=1025&sSearch=&bRegex=false&sSearch_0=&bRegex_0=false&bSearchable_0=true&sSearch_1=&bRegex_1=false&bSearchable_1=true&sSearch_2=&bRegex_2=false&bSearchable_2=true&sSearch_3=&bRegex_3=false&bSearchable_3=true&sSearch_4=&bRegex_4=false&bSearchable_4=true&sSearch_5=&bRegex_5=false&bSearchable_5=true&iSortingCols=1&iSortCol_0=0&sSortDir_0=asc&bSortable_0=true&bSortable_1=true&bSortable_2=true&bSortable_3=true&bSortable_4=true&bSortable_5=true",
    type: "json"
    });
});

【问题讨论】:

  • 查找同源策略。
  • 您应该发布您的代码,以便会员可以看到您的错误在哪里。请改写您的问题以使其简洁/切中要害,并输入您目前遇到问题的 ajax 代码。
  • 这是我几周前提出的解决方案:stackoverflow.com/questions/12611469/…
  • @MLM:谢谢!我按照您的代码示例使其正常工作。我从来没有想过这样的解决方法... :o SLaks: 我知道它是什么,无论如何它是关于获取数据的。

标签: jquery ajax json jsonp cross-site


【解决方案1】:

你可以使用这个选项来做到这一点

  1. 调用php页面
  2. 向另一个站点发出 curl 请求
  3. 获取 curl 输出数据
  4. 将输出数据返回给ajax
  5. 在您的代码中使用该输出数据

【讨论】:

  • 非常感谢!这与上面传销的建议相同,最终奏效!这是一种解决方法,但现在结合 curl 和一些 eval 我让它工作了。非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-29
  • 2023-03-20
  • 2010-09-24
  • 1970-01-01
  • 2011-02-03
相关资源
最近更新 更多