在不使用JSON的情况下在JavaScript中进行REST调用?

Ste*_*ver 0 javascript rest http-get

(非常无知的问题,我坦率地承认)

我有一个简单的网页,上面有一个按钮和一个标签.当我单击按钮时,我想对一个完全不同的域(跨域,我知道很多)进行REST调用,并在标签中显示结果(HTML).

使用其他API,我已经玩过使用JSON/P并动态添加元素,但是这个特殊的API不支持JSON,因此我不确定如何成功通过.

我的代码是:

    function getESVData() {
    $.get('http://www.esvapi.org/v2/rest/passageQuery?key=IP&passage=John+1', function (data) {
        $('#bibleText').html(data);
        app.showNotification("Note:", "Load performed.");
    });
}
Run Code Online (Sandbox Code Playgroud)

我得到了"拒绝访问".无论如何在没有JSON的情况下成功调用此调用?

Nic*_*son 6

首先,JSON和JSONP不一样.JSON是一种表示信息的方式,JSONP是围绕同源策略的黑客攻击.JSONP通过从另一个域请求信息来工作,并且该域返回一个脚本,该脚本使用该信息调用函数(使用您提供的名称).您确实在您的网站上执行了另一个域提供给您的脚本,因此您应该信任其他域.

现在,在尝试制作跨域请求时,您基本上有3个选项:

  1. 使用JSONP.这有一些限制,包括它只适用于GET请求,而您发送请求的服务器必须支持它.
  2. 进行跨源资源共享(CORS)请求.您发送请求的服务器也必须支持此功能.
  3. 在您自己的服务器上设置代理.在这种情况下,您可以在站点上设置一个只是中继请求的端点.即您从服务器请求信息,您的服务器从其他服务器获取信息并将其返回给您.

对于您的情况,其他服务器不支持其他选项,看起来您将不得不选择3.