JavaScript跨域问题探究一

本文解答了一个关于JavaScript跨域的问题,解释了为什么使用Ajax请求其他网站的PHP页面会遇到浏览器不响应的情况,并对比了使用form.submit()提交表单到其他网站页面的行为。文章还详细介绍了跨域访问的基本原理及同源策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

传闻JavaScript跨域问题是每个JavaScript程序员必须熟知的一个问题,自己不知,那就充电吧。于是搜到一帖。

原帖提问:

今天搞一个网页的时候遇到了一个问题,我通过ajax的xmlhttp的open方法请求一个其他网站的php页面,浏览器不响应,为什么不得行?这种情况算跨域访问吗?
另外,我用js提交一个表单到其他网站的页面,用form.submit(),这样是可以的,同样都是请求页面,这和第一种情况有什么区别?

下面是我挑选出感觉比较靠谱的解释:

域(Domain)是Windows网络中独立运行的单位,域之间相互访问则需要建立信任关系(即Trust Relation)。信任关系是连接在域与域之间的桥梁。当一个域与其他域建立了信任关系后,2个域之间不但可以按需要相互进行管理,还可以跨网分配文件和打印机等设备资源,使不同的域之间实现网络资源的共享与管理。 有一种简明的说法来解释广域跨域:跨域访问,简单来说就是 A 网站的 javascript 代码试图访问 B 网站,包括提交内容和获取内容。由于安全原因,跨域访问是被各大浏览器所默认禁止的。
在广域网环境中,由于浏览器的安全限制,网络连接的跨域访问时不被允许的,XmlHttpRequest也不例外。但有时候跨域访问资源是必需的。
同源策略阻止从一个域上加载的脚本获取或操作另一个域上的文档属性。也就是说,受到请求的 URL 的域必须与当前 Web 页面的域相同。这意味着浏览器隔离来自不同源的内容,以防止它们之间的操作。同源策略不阻止将动态脚本元素插入文档中。
参考理论一:在浏览器中不能直接来跨域访问,而在服务器端没有跨域安全限制。
这样的话,可以在服务端完成跨域访问,而在客户端来取得结果就可以了。
参考理论二:同源策略不阻止动态脚本元素插入,脚本访问可以跨域。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值