在不使用jQuery的情况下,将不同域上的网站部分下载到JavaScript中的变量?

在不使用jQuery的情况下,将不同域上的网站部分下载到JavaScript中的变量?,javascript,xmlhttprequest,Javascript,Xmlhttprequest,总结: 我希望将网页的第一个4kB(实际上是一个MP3,但不重要)从另一个域保存到JavaScript中的一个变量,理想情况下不使用jQuery,因为我不需要jQuery来处理页面上的任何其他内容。 这就是我以前在python应用程序中使用的方法,以实现相同的目标: host = 'http://www.wikipedia.org/somepath/tosome/file.mp3' req = urllib2.Request(host, headers={'User-Agent' : "Magi

总结:

我希望将网页的第一个4kB(实际上是一个MP3,但不重要)从另一个域保存到JavaScript中的一个变量,理想情况下不使用jQuery,因为我不需要jQuery来处理页面上的任何其他内容。 这就是我以前在python应用程序中使用的方法,以实现相同的目标:

host = 'http://www.wikipedia.org/somepath/tosome/file.mp3'
req = urllib2.Request(host, headers={'User-Agent' : "Magic Browser"})
response = urllib2.urlopen(req).read(4*1024)

背景:

我的目标是只获取MP3文件的几千字节(来自不同的域),这样我就可以从中删除ID3信息。然而,经过大量的谷歌搜索,以及对xmlhttprequests、jsonp和其他一些东西的处理,我仍然找不到满足我所有需求的东西。 阅读本帖- 这确实很有帮助,但我似乎无法解决如何限制这样的回调大小(可能限制脚本源大小?),而且我真的不想包含jQuery库


非常感谢您的帮助

注意:我发布了一个包含javascript+php的解决方案。但您可以使用任何其他编程语言,如python(只更改语法,不更改逻辑)

。使用Ajax调用服务器中的php文件

。在服务器端php文件中:

使用curl读取跨域html

$url = "http://www.google.com;
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
$output = curl_exec($curl);
curl_close($curl);
。然后使用PHP的DOM对象模型解析HTML-()

例如:

$domObj = new DOMDocument;
$domObj->loadHTML( $output);
$divs = $domObj->getElementsByTagName('div');
。将o/p html内容返回到客户端


。最后,将ajax响应(html)收集到本地javascript变量中。

我认为您必须使用服务器端语言。JSONP并不适合下载任意数据(当然,只要最终结果是有效的JavaScipt,就有可能),而且它不会给您任何对请求的控制权。首先要做的是找出您正在访问的站点是否具有允许跨域访问的适当标头。如果它没有,并且没有JSONP API(除非它完全按照您的要求设计,否则它实际上不会工作),那么您就不能在浏览器中通过JavaScript来实现。您需要客户端或服务器端解决方案吗?对于服务器端,您可以使用JavaScript实现这一点。@pointy-文件将由dropbox媒体URL(基本上是临时dl URL)提供,从这一点来看,它似乎支持JSONP API。(AT)stan-客户端不幸。@由于JSONP工作的基本方式无法实现这一点,因此无法实现。感谢您的建议,不幸的是,我仅限于客户端不幸,因此,我正在以其他方式解决这个问题……不过我觉得似乎没有更好的答案来回答我提出的问题。