当前位置: 首页 > 面试题库 >

如何在提取/ axios跨站点请求上使用JSONP

程鸿波
2023-03-14
问题内容

我正在尝试对Wikipedia API进行GET请求。如下使用jQuery可以正常工作:

$.ajax({
  url: 'https://en.wikipedia.org/w/api.php?format=json&action=query&generator=search&gsrnamespace=0&gsrlimit=10&prop=pageimages|extracts&pilimit=max&exintro&explaintext&exsentences=1&exlimit=max&gsrsearch=Test&callback=JSON_CALLBACK',
  type: 'GET',
  headers: {'X-Requested-With': 'XMLHttpRequest'},
  crossDomain: true,
  dataType: 'jsonp'
}).done(function(data) {
  console.log("Data: ", data);  
});

但是我想使用fetch或axios api,该API会在 飞行前 通过请求方法 OPTIONS
停止。为什么它在jQuery中起作用,但在其他API中却不起作用?

axios.get('https://en.wikipedia.org/w/api.php?format=json&action=query&generator=search&gsrnamespace=0&gsrlimit=10&prop=pageimages|extracts&pilimit=max&exintro&explaintext&exsentences=1&exlimit=max&gsrsearch=Test&callback=JSON_CALLBACK', 
    { headers: {'X-Requested-With': 'XMLHttpRequest',
                'content-type': 'text/plain'}
    })
    .then(function (response) {
        console.log("Response: ", response);  
    });

我看到它可能与GET请求的Content-Type有关,在jQuery上,默认值似乎是 text / plain ,但是尝试更改fetch /
axios请求的内容类型时,我没有成功作为 text / html 发送。

有什么问题的想法吗?


问题答案:

我发现问题与请求的内容类型无关。

问题是由于以下事实造成的:API(获取和axios)不支持 jsonp 请求。 jsonp
的使用对我来说还不够清楚,我可以在这里找到很好的解释

尽管他们不支持它,但它们提供了执行 jsonp 请求的替代方法:

axios:https
:
//github.com/mzabriskie/axios/blob/master/COOKBOOK.md#jsonp
提取:https :
//www.npmjs.com/package/fetch-jsonp



 类似资料:
  • 问题内容: 我需要从一个网站向另一个域中托管的REST Web服务发出AJAX请求。 尽管这在Internet Explorer中很好用,但是其他浏览器(例如Mozilla和Google Chrome)强加了更加严格的安全性限制,这些限制禁止跨站点AJAX请求。 问题是我无法控制站点所在的域或Web服务器。这意味着我的REST Web服务必须在其他地方运行,并且我无法采用任何重定向机制。 这是进行

  • 问题内容: 我正在尝试使用“ GWT请求”构建器发出“跨站点请求”,但我无法使其正常工作。如您所见,这是一个GWT示例项目的大部分内容,我已经浏览了https://developers.google.com/web- toolkit/doc/latest/tutorial/Xsite 。但是我仍然缺少一些东西。 我在这里发布代码。我在想什么..? 问题答案: 实际上,如果可以在Servlet Re

  • 问题内容: 浏览器不允许跨站点AJAX调用(这是安全限制)。有没有可能的解决方案? 编辑 我只控制来电者的网站 问题答案: 如果您控制双方,那么会有很多选择。例如JSONP,或修改远程网站的标头响应。 不幸的是 ,只有在远程网站支持的情况下,JSONP才有效。您 不能 将JSONP调用强制到尚不支持它的网站。 但是,正如您所说,您只能控制源网站。出于明显的原因,您无法绕过此限制来入侵浏览器。您确实

  • 本文向大家介绍使用AngularJS 跨站请求如何解决jsonp请求问题,包括了使用AngularJS 跨站请求如何解决jsonp请求问题的使用技巧和注意事项,需要的朋友参考一下 今天写东西的时候遇到了 一种情况 ,因为用的不是自己公司人员写的接口 ,而我要写的东西是抓别的网页上的接口 所以出现了 一下这种情况 用 get请求出现拦截跨站请求资源  以下是解决办法, 这是我的请求: 我在浏览器模板

  • 一个星期以来,我一直在解决这个问题;我连接到我的服务器API并检索cookie。 然后我做了一个GET来检索JSON Cookie会话,但是我在跨源代码方面遇到了一个问题。 在API的一侧是可以的,因为我得到了一个良好的状态200。 答复如下: ============================================================= 响应:访问控制允许信任。。。真

  • 我正在开发Web应用程序,并要求在发布之前对其运行。 然后我下载了Vega并快速扫描了我的webapp,发现了一个VAPT问题,如下所示: Vega检测到资源设置了不安全的跨源资源共享(CORS)访问控制。CORS提供了允许服务器将跨站点请求的资源访问限制到某些受信任域的机制。通过将“Access Control Allow origin”响应头的值设置为通配符值,所讨论的服务器已允许来自任何源的