【问题标题】:How do I know if a server has JSONP turned on?我如何知道服务器是否开启了 JSONP?
【发布时间】:2010-08-12 12:00:28
【问题描述】:

我如何知道服务器是否开启了 JSONP?它不是我的服务器,但我尝试从呈现的 html 中访问一些信息。

提前致谢。

【问题讨论】:

    标签: javascript json jquery


    【解决方案1】:

    对于大多数服务器,您可以在浏览器中向他们拥有的任何 JSON 页面/服务发出请求,然后在 URL 中添加一个回调函数,例如:

    http://example.com/getJson?var=something
    

    添加callback查询参数,如下所示:

    http://example.com/getJson?var=something&callback=myFunction
    

    响应而不是这个(如果它不支持 JSONP,它看起来像这样):

    { "thing": "value" .... }
    

    应该看起来像这样(再次,如果它支持 JSONP):

    myFunction({ "thing": "value" .... });
    

    【讨论】:

    • 对,这里的关键词是most。 :-)
    • 第二个 url 应该是 http://example.com/getJson?var=something&callback=myFunction - 一个 & 而不是 $
    • @Hamish - 确实应该,我的错字,已修复!谢谢:)
    【解决方案2】:

    如果您可以将callback添加到URL,则服务器已打开JSONP:

    http://example.com/api/get_info.js?callback=myfunc
    

    服务器以 JSON 格式响应您请求的信息,并与您的回调一起包装:

    myfunc({
        /* json formatted data goes here */
    });
    

    【讨论】:

    • 其实没有。这仅在服务器正在寻找 callback 作为回调参数时才有效。回调参数实际上可以是任何东西。
    • 标准是callback。例如,它适用于 jQuery 中的 JSONP 支持。当然它可以是任何东西,但这几乎没有帮助,不是吗?
    【解决方案3】:

    您阅读了您尝试访问的 Web 服务的 API 文档。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-13
      • 2016-09-07
      • 2012-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多