对于JavaScript限制跨域访问的原因一直不明白,因为他给我的开发过程中带来不少的麻烦,也实在想不明白JavaScript限制跨域的作用,今天带着这个疑问到开元中国提问了,没想到一个大神的解答让我茅塞顿开啊。



大神的解答



在Firebug控制台中运行

$.ajax('http://www.baidu.com/');

请求会被Firefox阻止并提示:

已阻止交叉源请求:同源策略不允许读取 http://www.baidu.com/ 上的远程资源。可以将资源移动到相同的域名上或者启用 CORS 来解决这个问题。





由于浏览器实现的同源策略的限制,XmlHttpRequest只允许请求当前源(域名、协议、端口)的资源,所以AJAX是不允许跨域的。不过 像<script>,<link>,<img>,<iframe>这些标签是允许跨域的,但你并不能修 改这些资源,比如iframe里的内容。



为什么浏览器要实现同源限制?我们举例说明:



比如一个黑客,他利用iframe把真正的银行登录页面嵌到他的页面上,当你使用真实的用户名和密码登录时,如果没有同源限制,他的页面就可以通过 JavaScript读取到你的表单中输入的内容,这样用户名和密码就轻松到手了.又比如你登录了OSC,同时浏览了恶意网站,如果没有同源限制,该恶意 网站就可以构造AJAX请求频繁在OSC发广告帖.



想必大家已经明白了吧,假如不阻止JavaScript的跨域访问那将发生多么危险的事情啊。



但是有时候我们确实是要跨域访问的,我们要的是正常跨域访问,对于这个问题我们可以用JSONP的格式来实现跨域访问,但是这个访问必须是服务端返回一个回调函数,所以这种访问是基于访问者和被访问者直接的一种约定好的方式访问的,也就不存在上面的安全隐患了。



原问题地址: http://www.oschina.net/question/2321543_229731

答疑人地址(感谢): http://my.oschina.net/eechen

关于JavaScript为何要限制跨域访问相关推荐

  1. Javascript跨域访问解决方案

    由于安全方面的考虑, Javascript 被限制了跨域访问的能力,但是有时候我们希望能够做一些合理的跨域访问的事情,那么怎么办呢? 这里分两类情况: 一.基于同一父域的子域之间页面的访问       ...

  2. jsp允许跨域访问_js跨域访问解决方法(jsp代理)

    在javascript中通过xmlhttprequest跨域访问其他资源会被浏览器阻止,因为跨域访问容易引起安全问题.对于要访问的资源那端不能被修改的情况(要访问的资源的服务器不能被修改的情况),可以 ...

  3. 使用jquery完成跨域访问

    jquery实现跨域访问有两种方式,一个是$.getJSON,一个是$.ajax,注意只有get请求才能实现跨域访问. 一.$.getJSON实现跨域访问 get.html: <!doctype ...

  4. JavaScript在发送ajax请求时,URL域名地址是使用绝对地址还是相对地址?什么是浏览器跨域访问操作,js如何实现?

    1.首先来了解一下AJAX: AJAX是创建交互式网页应用的网页开发技术的一种. Ajax = 异步 JavaScript 和 XML 或者是 HTML.可以用于创建快速动态网页的技术.在无需重新加载 ...

  5. 服务器端可控情形的Javascript跨域访问解决方法

    在最近的一个web项目中为了实现bookmark功能碰到了javascript跨域访问的问题.起初,在google上搜的很多解决方案并不适用于我的情形,只在有一篇文章中提到的远程加载javascrip ...

  6. [Unity WWW] 跨域访问解决方法

    什么是跨域访问 域(Domain)是Windows网络中独立运行的单位,域之间相互访问则需要建立信任关系(即Trust Relation).信任关系是连接在域与域之间的桥梁.当一个域与其他域建立了信任 ...

  7. AJAX跨域访问解决方案

    Case I. Web代理的方式 (on Server A) 即用户访问A网站时所产生的对B网站的跨域访问请求均提交到A网站的指定页面,由该页面代替用户页面完成交互,从而返回合适的结果.此方案可以解决 ...

  8. JQuery实现Ajax跨域访问--Jsonp原理

    JavaScript是一种在Web开发中经常使用的前端动态脚本技术.在JavaScript中,有一个很重要的安全性限制,被称为"Same-Origin Policy"(同源策略). ...

  9. jsonp跨域访问服务

    前段时间在做产品开发的时候,需要与公司网站那边进行交互,我们所开发的产品上线后是放在一个域名下,公司网站那块是在另一个域名下,这样在页面中调用 网站那边的接口时就存在跨域的问题,当时为了不修改网站那边 ...

最新文章

  1. 保存csv时, 不保留index
  2. Windows Forms Programming In C# 读书笔记 - 第三章 Dialogs
  3. python程序语法元素分析_Python程序语法元素分析(2)
  4. Maven配置JDK编译版本
  5. python中grid函数_Python-Numpy模块Meshgrid函数
  6. 【图论】【高精】产生数(ssl 1021/ luogu 1037)
  7. list转字符串_剑指offer 38——字符串的排列
  8. 人工智能只能用python吗_为什么人工智能用Python?
  9. LNK2019 无法解析的外部符号 __imp_CommandLineToArgvW,该符号在函数 WinMain 中被引用
  10. ICCV2021 | 南洋理工大学、港中大提出Talk-to-Edit,对话实现高细粒度人脸编辑
  11. Eclipse汉化插件
  12. 程序员高效技巧系列 -- 完全脱离鼠标的终端
  13. CountDownLatch、CyclicBarrier、Semaphore的区别
  14. 财务自由之路读书笔记
  15. ckplayer html播放本地,vue中使用ckplayer播放器
  16. git简明教程 - 协作篇
  17. AngelScript -- C++程序最好的脚本语言
  18. 用python做题——PythonChallenge-1
  19. python: 解决SyntaxError: encoding problem
  20. python牛顿迭代法求根例题_1.3求根之牛顿迭代法

热门文章

  1. 西霞口船业公司疑遭外商合谋欺诈
  2. 算力网络 — 技术架构
  3. 5G NGC — NWDAF 网络智能分析功能
  4. 2021 亚马逊云科技中国峰会,对话《容器混合云会是未来的答案吗》
  5. 5G NGC — 关键技术 — 计算与存储分离
  6. 5G NR — 国内运营商的频段和带宽划分
  7. Everything排除某个目录、隐藏文件、系统文件
  8. vue 原理简单实现
  9. 手机webapp meta标签 (全屏)
  10. WIndows 下安装mysql (non-install版本,即绿色版,或称为 源码包)