javascript - 如何在没有 JSONP 的情况下通过 AJAX 调用访问来自不同服务器的数据?

标签 javascript jquery ajax cross-domain cross-domain-policy

我正在处理客户端在 ServerA 中具有后端代码的项目,而我的前端代码(应该通过 AJAX 请求与后端通信)在 ServerB 上,它们位于不同的位置域。由于同源策略,我无法成功发出这些请求(既不是 POST 也不是 GET)。是否可以在不更改后端代码来处理 JSONP 的情况下以某种方式启用它?例如,将该特定域列入白名单之类的?

我试图在我的本地网络中模拟这个,后端代码在 10.0.1.4(不同的机器)上运行,我从本地主机(apache)访问它,但无法找出任何不'需要使用 jsonp。进行调用时,我什至在后端的日志中看不到任何内容,但它在 REST 客户端上运行良好,只需加载 GET 请求的 URL。如何实现不使用 JSONP 的公共(public) API 请求?

我至少需要一种方法(POST 或 GET)才能工作。谢谢。

最佳答案

Is it possible to enable it somehow without changing the back-end code to handle the JSONP? eg., white list that particular domain, or something?

是的,您可以在您的域上编写服务器端脚本,作为您和远程域之间的桥梁,然后向您的脚本发送 AJAX 请求。

不要指望奇迹。如果您无法控制您被破坏的远程域。 same origin policy出于安全原因内置于浏览器中的限制会让你崩溃。好吧,您总是可以编写自己的浏览器而不执行此策略,但我想您明白我的意思了。

常见的解决方法包括 JSONPCORS但它们涉及对远程域的控制。如果您无法控制,请阅读我之前的句子以及我的第一句话。

这是一个 nice guide我邀请您咨询,其中涵盖了一些允许使用 jQuery 实现跨域 AJAX 的常用技术。然后调整最适合您的方案。并且总是有重型火炮解决方案,涉及使用服务器端脚本桥接 2 个域,如果没有其他解决方法可以帮助您,该脚本在 100% 的情况下都可以防弹。

关于javascript - 如何在没有 JSONP 的情况下通过 AJAX 调用访问来自不同服务器的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11403984/

相关文章:

javascript - 如何从不同设备连接到 firestore 上的同一文档?

javascript - 将某个单词(或单词序列)的每次出现自动超链接到预定义的 URL(无歧义);但不显示完整网址

javascript - React Webpack 和服务器

javascript - 访问 iPhone GPS 坐标

javascript - 在 Javascript 中将 JSON 值设置为 HTML 表?

javascript - tampermonkey 中的 "instant inject"是如何工作的?

javascript - 将值传递给 JQuery 中的函数和变量范围

jquery - 使用 jQuery 更改文本区域文本

javascript - Select2 JS 使用 Ajax 加载远程数据

Ajax 请求不是异步的