Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Jquery的跨域请求(非AJAX)_Javascript_Jquery - Fatal编程技术网

Javascript 使用Jquery的跨域请求(非AJAX)

Javascript 使用Jquery的跨域请求(非AJAX),javascript,jquery,Javascript,Jquery,我不知道这是否可能,但我想要的是创建一些脚本,扫描到不在我的服务器上的网页,并获取其源代码,这样我就可以使用一些数据,比如PERL或Rails脚本,但要使用Jquery/Javascript 这可能吗?不可能从客户端从其他网页获取HTML代码。除非您能够配置其他服务器 对于更多阅读在一般情况下,不可能从客户端进行,因为会阻止加载和查看从不同来源加载的内容的HTML和脚本源。(当然,您可以在服务器上使用JavaScript实现这一点——NodeJS、Rhino和类似工具) 但是,如果其他域支持您使

我不知道这是否可能,但我想要的是创建一些脚本,扫描到不在我的服务器上的网页,并获取其源代码,这样我就可以使用一些数据,比如PERL或Rails脚本,但要使用Jquery/Javascript


这可能吗?

不可能从客户端从其他网页获取HTML代码。除非您能够配置其他服务器


对于更多阅读

在一般情况下,不可能从客户端进行,因为会阻止加载和查看从不同来源加载的内容的HTML和脚本源。(当然,您可以在服务器上使用JavaScript实现这一点——NodeJS、Rhino和类似工具)

但是,如果其他域支持您使用的浏览器,则另一端(其他网站)可以允许您的源代码(或所有源代码)访问它。但另一端必须允许

您也将在本文中听到,但这只允许您从另一端获取数据(而不是HTML源代码等),并且需要另一端显式支持它

所以你可能需要一个服务器。不过,这并不一定意味着它必须是您的服务器:您可以出于某些目的将其用作一个服务器。

同源策略

同源策略是对web内容JavaScript代码可以与之交互的全面安全限制。它通常在网页包含元素或打开其他浏览器窗口时发挥作用。在这种情况下,同源策略控制一个窗口或框架中的JavaScript代码与其他窗口和框架内容的交互。具体来说,脚本只能读取与包含脚本的文档具有相同来源的窗口和文档的属性

文档的来源定义为从中加载文档的URL的协议、主机和端口。从不同web服务器加载的文档具有不同的来源。通过同一主机的不同端口加载的文档具有不同的来源。使用http:protocol加载的文档与使用https:protocol加载的文档具有不同的来源,即使它们来自同一个web服务器

重要的是要了解脚本本身的来源与同源策略无关:重要的是嵌入脚本的文档的来源。例如,假设主机a承载的脚本(使用元素的src属性)包含在主机B提供服务的网页中。该脚本的来源是主机B,并且该脚本可以完全访问包含该脚本的文档的内容。如果该脚本打开一个新窗口并从主机B加载第二个文档,则该脚本还可以完全访问该第二个文档的内容。但是,如果脚本打开第三个窗口并将来自主机C(甚至来自主机a)的文档加载到其中,则同源策略将生效并阻止脚本访问此文档


作者:David Flangan:Javascript;明确的指南

就你的问题而言,是的,这是可能的,但我感觉你误解了这些技术的工作原理。即使x域请求是可能的,javascript也无法从外部源收集数据,除非在浏览器中使用AJAX。我之所以说答案是肯定的,是因为这些限制只适用于在浏览器中执行javascript时。例如,如果您将javascript与say node.js结合使用,则规则完全不同,因为javascript能够创建套接字,并且x域限制不再适用


也许您应该澄清您的问题,以便提供更合适的答案。

当您说源代码时,您是指HTML响应还是实际的服务器端代码?后者是不可能的(除非web服务器设置为允许,这将是非常非常罕见的)!在javascript中处理跨站点数据的唯一方法是JSONP,所以除非主机支持,否则在没有JSONP或某种本地托管代理的情况下,javascript中不允许跨域请求。一个简单的google搜索就可以确认这一点。AJAX请求发送到您的服务器,您的服务器就会得到源代码并返回它。工作完成了@若昂·奥帕洛拉波林·里奥帕索斯:好交易!很高兴这有帮助。