【问题标题】:How to get cross domain request's response in javascript如何在javascript中获取跨域请求的响应
【发布时间】:2011-08-25 13:11:58
【问题描述】:

我通过动态添加脚本并将其 src 属性设置为我需要向其发出请求的域来在 javascript 中发出跨域请求。 供参考:http://alvinabad.wordpress.com/2009/02/13/feb13/

脚本代码:

var script_id = null;
var script = document.createElement('script');
script.setAttribute('type', 'text/javascript');
script.setAttribute('src', crossDomainURL);
script.setAttribute('id', 'script_id');

script_id = document.getElementById('script_id');
if (script_id) {
    document.getElementsByTagName('head')[0].removeChild(script_id);
}

现在,我需要解析这个请求的响应。我已经检查了提琴手的原始响应。数据在那里,但不在dom中。开头是这样的:

<script type="text/javascript">
/* <![CDATA[ */
    if (top == self || parent != top || document.location.hostname != document.domain) 
    {  
        top.location.replace("http:\/\/www.facebook.com\/?gringotts_redir");}
/* ]]> */
</script>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"**... then the rest

页面源显示我嵌入的 javascript,我如何解析从该代码生成的数据。

【问题讨论】:

  • 您能否提供您请求的位置,以便我可以看到完整的响应

标签: javascript dom request cross-domain dynamic-script-loading


【解决方案1】:

您要求的内容称为 JSONP 或“带填充的 JSON”。

请参阅:http://en.wikipedia.org/wiki/JSONP 了解更多信息。

【讨论】:

    【解决方案2】:

    通常这样做的方式是让脚本响应包含对页面上已经存在的函数的函数调用。但是,出于安全原因,浏览器不会让您的代码“看到”导入脚本的内容。但是,浏览器运行脚本,只要它是有效的 JavaScript 代码。在您的情况下,响应是 not 有效的 JavaScript 代码。不能有&lt;script&gt; 标记或任何HTML 标记——它必须是纯JavaScript 代码,就像使用&lt;script&gt; 标记导入的任何其他文件的内容一样。

    【讨论】:

      猜你喜欢
      • 2015-04-24
      • 1970-01-01
      • 1970-01-01
      • 2012-03-18
      • 1970-01-01
      • 2013-08-19
      • 1970-01-01
      • 2019-04-02
      • 2019-12-02
      相关资源
      最近更新 更多