目录
一. 处理跨域方式--代理
- 一个域名地址的组成;
https:// www . abc.com : 8080 / scripts/jquery.js
协议 子域名 主域名 端口号 请求资源地址
- 当协议,子域名,主域名,端口号中任意一个不相同时,都算作不同域;
- 不同域之间相互请求资源,就算作"跨域"; 比如http://www.abc.com/index.html请求http:www.efg.com/service.php;
- JavaScript出于安全方面的考虑,不允许跨域调用其他页面的对象,什么是跨域呢,简单地理解就是因为JavaScript同源策略的限制,a.com域名下的js无法操作b.com或是c.a.com域名下的对象;
- JavaScript出于安全方面的考虑,不允许跨域调用其他页面的对象;eg:
- www.abc.com/index.html调用www.abc.com/service.php(非跨域);
- www.abc.com/index.html调用www.efg.com/service.php(跨域);
- www.abc.com/index.html调用bbs.abc.com/service.php(跨域);
- www.abc.com/index.html调用www.abc.com:81/service.php(跨域);
- www.abc.com/index.html调用https://www.abc.com/service.php(跨域);
- 域名介绍: 子域名不相同就是跨域
- 主域名 abc.com
- 子域名 www.abc.com
- 子域名 bbs.abc.com
- 子域名 beijing.bbs.abc.com
- 子域名 haidian.beijing.bbs.abc.com
代理方法处理跨服详解:
- 同过在同域名的web服务器端创建一个代理;
- 北京的服务器(域名:wwwbeijing.com); 上海的服务器(域名:www.shanghai.com);
- 比如在北京的web服务器的后台来调用上海服务器的服务,然后再把响应结果返回给前端 ,这样前端调用北京同域名的服务就和调用上海的服务效果相同了;
- 说白了就是后台处理跨域,直接在同名服务器下写一个方法,调用跨域服务器的内容,然后把内容返回给客户端;
二: 处理跨域方法二--JSONP
JSONP可用于解决主流服务器GET请求的跨域数据访问的问题,不支持POST请求;
三: 处理跨域方式--XHR2
- HTML5提供的XMLHttpRequest Level2已经实现了跨域访问以及其他的一些新功能;
- IE10以下的版本都不支持;
- 在服务端做一些小小的改造即可:
header('Access-Control-Allow-Origin:*');
header('Access-Control-Allow-Methods:POST,GET');