ajax - 跨域 XHR/AJAX : a possible workaround?

标签 ajax cross-domain xmlhttprequest

我刚刚有了进行跨域 AJAX 调用的想法,因为到目前为止,它们确实是一个需要处理的 PITA。 这是一个我在网络上的任何地方都没有看到的解决方案,所以它可能(可能是)有缺陷/危险出于某种原因,我现在似乎看不到,所以我求助于你告诉我这是否合法:

今天,如果您拥有一个域 www.foo.com,您就不能发出 XML Http 请求来表示 www.bar.com。但是,如果您为 foo.com 创建了一个 XHR,然后它会通过 cURL 请求(或套接字或其他任何东西)向 bar.com 请求该页面怎么办?

您通常设置您的 xhr,无论是 GET 还是 POST,但是您将它发送到 foo.com/remote-xhr.php 并添加一个包含最初预期 URL 的“url”参数和“params”包含参数的参数。

remote-xhr.php 解析“params”,调用“url”,并“回显”响应。

这绝对是一种权衡,因为:1. 您使用其他解决方案(脚本标记 hack/JSONP)进行了 2 次调用,而不是一次调用,并且 2. 您失去了可能拥有的任何身份验证,因为客户端没有请求页面,但是服务器是(您可以使用唯一 ID、salt 等解决它);但是你有一个完全正常的 XHR 调用,可以与任何 distand 域一起工作!

我错过了什么?

最佳答案

我想你已经想到了其中的一些,但以防万一

  1. 如果您没有对服务器端 XHR 传递进行任何类型的身份验证,您可能希望限制可以调用的 URL 并解析参数以发现任何异常的 XSS 机会。

  2. 延迟增加可能会给您的网络服务器带来压力,因为它可能会使请求/响应线程等待 cURL 响应恢复的时间更长(除非您正在执行某种额外的异步架构)。缓存 cURL 响应可能更可取,但取决于您可能遇到的 POST 参数的变体数量,这可能不是一个选项。

我确定还有其他取决于您的应用程序,但我会继续说我正在做这样的事情,但这只是因为我支付了一个我不想直接暴露给我的外部 API AJAX 应用程序...所以我已经非常大量地抽象了调用,并将它们限制为几乎单个外部 URL。

关于ajax - 跨域 XHR/AJAX : a possible workaround?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6906903/

相关文章:

javascript - 给 XMLHttpRequests 添加参数导致 405 错误

javascript - 有没有办法让 chrome 打包的应用程序处理 Http BasicAuthentication

ajax - 如何重新加载推特按钮?

Javascript - 根据ajax响应停止表单提交

c# - 如何将参数传递给在 JQuery dialog() Open 事件上调用的操作

api - 当浏览器存在同源策略时,REST API 如何与 JavaScript 一起使用?

javascript - 跨域和 ExtJS

ajax - Angular资源如何保留ajax header 并同时启用cors

asp.net核心中的ajax POST int参数

html - iframe 中的 iframe 无法加载