通过 javascript 请求和响应第三方域

Posted

技术标签:

【中文标题】通过 javascript 请求和响应第三方域【英文标题】:Request & Response to a 3rd party domain via javascript 【发布时间】:2012-05-23 19:29:12 【问题描述】:

我在一个基于网络的应用程序中工作,它必须从他们的帐户在 3rd 方网站上向用户显示信息,他们将提供他们的登录详细信息,我必须从他们的帐户中提取数据并将其显示在我的网络上基于应用程序,但问题是 第 3 方网站不允许任何其他人访问他们的帐户,这些人没有在他们的数据库中注册的 ip。所以,我不能使用任何服务器端或任何类型的代理,我必须使用用户 ip 来发送和接收站点的数据

所以我的主要问题是“如何以任何基于客户端的语言获得跨域请求的响应”。我听说这是不可能的,因为它违反了跨域政策,但我发现一些网站告诉它可以使用 JSONP 和一些 src 属性。我实际上很困惑如何做到这一点。我需要一个该方法的示例,例如我向 3rd 方站点发出请求并能够读取他们发送的响应。

请帮帮我。

谢谢

【问题讨论】:

【参考方案1】:

您不能让访问者的浏览器向任意网站发出 HTTP 请求并用 javascript 处理响应。

如果第 3 方构建了 JSON-P API,您可以使用它。

如果第 3 方支持 CORS(并且您的访问者有 compatible browser,那么您可以使用 XHR。

除非您被告知它们受支持,否则详细介绍其中任何一种方法都没有什么意义。 (如果第三方将他们的服务锁定到特定的 IP 地址,如果任何一个都支持,我会感到惊讶。

【讨论】:

【参考方案2】:

对于 JSONP 请求,您可以使用库或手动执行。对于后者,您插入一个带有 src 属性的新 <script> 标记,该属性包含您的所有请求信息和一个额外的回调属性。

 <script src="//remote.host.com/getJSONP.php?param1=0&callback=myFunc"></script>

然后,您必须在您的页面中定义一个与回调同名的函数(此处为 myFunc),用于处理响应。

function myFunc( data ) 
  // do something with data

响应通常是一个或多或少复杂的 JS 对象,然后您可以在回调函数中使用它。

注意:您只能传递 GET 参数,不能传递 POST 或任何其他类型!

【讨论】:

以上是关于通过 javascript 请求和响应第三方域的主要内容,如果未能解决你的问题,请参考以下文章

跨域并设置headers的请求

JavaScript学习手册(38)

无法从前端 JavaScript 访问跨域响应标头

请求接口无响应

关于Javascript作用域及作用域链的总结

13javascript跨域通信