跨域详解

什么是跨域?

跨域,指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对javascript施加的安全限制。

所谓同源是指,域名,协议,端口均相同,不明白没关系,举个栗子:

http://www.123.com/index.html 调用 http://www.123.com/server.php (非跨域)

http://www.123.com/index.html 调用 http://www.456.com/server.php (主域名不同:123/456,跨域)

http://abc.123.com/index.html 调用 http://def.123.com/server.php (子域名不同:abc/def,跨域)

http://www.123.com:8080/index.html 调用 http://www.123.com:8081/server.php (端口不同:8080/8081,跨域)

http://www.123.com/index.html 调用 https://www.123.com/server.php (协议不同:http/https,跨域)

请注意:localhost和127.0.0.1虽然都指向本机,但也属于跨域。

浏览器执行javascript脚本时,会检查这个脚本属于哪个页面,如果不是同源页面,就不会被执行。

下表给出了相对http://store.company.com/dir/page.html同源检测的结果:

时间: 2024-08-18 09:32:50

跨域详解的相关文章

跨域详解 been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource

跨域问题的原因:浏览器出于安全考虑,限制访问本站点以为的资源. 比如你有一个 网站 127.0.0.1:8080/ , 并且上面挂了一个页面 ,那么在这个页面中 ,你只访问 本站点的 资源不会受到限制,但是你如果访问其他站点,比如  127.0.0.1:8081 的资源就会受到限制. 备注:暂且把  协议,域名,端口都一样的叫做同一个站点. 但是  带有 src 属性的标签可以没有这个 限制,比如 img ,script  等等. 在说说历史,以前的程序前后端不分离, 页面 和 请求接口,在同一

JavaScript中的跨域详解(内附源码)

什么是跨域? 什么是跨域? 所谓跨域,就是如果在不同的域名下面存在数据交互,这个时候就会存在跨域的问题,这里要说明的是在同一个网站不同的文件夹下的数据交互是不存在跨域问题的. 哪些情况下存在跨域问题? 主域和子域之间会存在跨域问题(比如 www.a.com 和 www.a.b.com). 不同的域名存在跨域问题,哪怕这两个域名指向的是同一个ip地址. 为什么 ajax 不可以跨域? 因为 ajax 是通过 XMLHttpRequest 这个对象来进行数据之间的交互的,而 XMLHttpReque

Jsonp如何实现跨域详解

JSONP原理 JSONP的最基本的原理是:动态添加一个<script>标签,而script标签的src属性是没有跨域的限制的.这样说来,这种跨域方式其实与ajax XmlHttpRequest协议无关了. JSONP(JSON with Padding)是json的一种"使用模式",可用于解决主流浏览器的跨域数据访问的问题.由于同源策略,一般来说位于 server1.example.com 的网页无法与不是 server1.example.com的服务器沟通,而 HTML

CORS跨域详解

废话少数,直接上代码!!!!!!!!!! html: <!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8">     <title>Document</title>      <script src="http://cdn.bootcss.com/jquery/3.1.1/jquery.js"

js&amp;jquery跨域详解jsonp,jquery并发大量请求丢失回调bug

URL 说明 是否允许通信 http://www.a.com/a.js http://www.a.com/b.js 同一域名下 允许 http://www.a.com/lab/a.js http://www.a.com/script/b.js 同一域名下不同文件夹 允许 http://www.a.com:8000/a.js http://www.a.com/b.js 同一域名,不同端口 不允许 http://www.a.com/a.js https://www.a.com/b.js 同一域名,不

Js跨域详解

感谢园子离的Rain Man这哥们,资料非常详细: 详情参见:http://www.cnblogs.com/rainman/archive/2011/02/20/1959325.html#m0 我摘出来一部分自己收藏: -------------------------------------------------------------------------------------------------- 什么是跨域 JavaScript出于安全方面的考虑,不允许跨域调用其他页面的对象.

跨域详解及其常见的解决方式

跨域是什么 跨域是一个域下的网页去请求另一个域下的资源.严格点来说就是两个域的协议.域名.端口任何一个不同时,都会被当作跨域.当跨域访问资源时,会受到浏览器的安全限制,详细的情况可以看下表: URL 说明 是否允许通信 http://www.a.com/a.js http://www.a.com/b.js 同一域名 允许 http://www.a.com/a/a.js http://www.a.com/b/b.js 同一域名,不同文件夹 允许 http://www.a.com:3000/a.js

vue-cli3设置代理跨域详解

老规矩,先上代码 // 在根目录下自行创建vue.config.js module.exports = { // cli3 代理是从指定的target后面开始匹配的,不是任意位置:配置pathRewrite可以做替换 devServer: { port: '8080', open: true, proxy: { '/api': { // /api 的意义在于,声明axios中url已/api开头的请求都适用于该规则, // 注意是以/api开头,即:axios.post({url: '/api/

关于HTTP协议头域详解

HTTP1.1 请求头:消息头  Accept:text/html,image/*  告诉服务器,客户机支持的数据类型 Accept-Charset:ISO-8859-1  告诉服务器,客户机采用的编码  Accept-EnCoding:gzip,compress 告诉服务器,客户机支持的数据压缩格式 Accept-Language:en   客户机的语言环境 Host: 客户机告诉服务器,想访问的主机名  If-Modified-Since:客户机通过这个头告诉服务器,资源的缓存时间  Ref