出现跨域问题的情况
- 域名地址的组成:http:// www . google : 8080 / script/jquery.js
http:// (协议号)
www (子域名)
google (主域名)
8080 (端口号)
script/jquery.js (请求的地址)
- 当协议、子域名、主域名、端口号中任意一各不相同时,都算不同的“域”。
- 不同的域之间相互请求资源,就叫“跨域”。
url1 | url2 | 说明 | 允许 |
---|---|---|---|
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:8080/a.js | http://www.a.com:9090/a.js | 同一域名不同端口号 | 不允许 |
http://www.a.com:8080/a.js | http://www.a.com:9090/a.js | 同一域名不同协议 | 不允许 |
http://www.a.com/a.js | http://192.168.4.158/b.js | 域名与域名对应的ip地址 | 不允许 |
http://www.a.com/a.js | http://test.a.com/b.js | 主域名相同,子域名不同 | 不允许 |
http://www.a.com/a.js | http://www.b.com/b.js | 不同域名 | 不允许 |
处理跨域的方法
- 代理
这种方式是通过后台(ASP、PHP、JAVA、ASP.NET)获取其他域名下的内容,然后再把获得内容返回到前端,这样因为在同一个域名下,所以就不会出现跨域的问题。
比如在A(http://www.beijing.com/sever.php)和B(http://www.shanghai.com/sever.php)各有一个服务器,A的后端(http://www.beijing.com/sever.php)直接访问B的服务,然后把获取的响应值返回给前端。也就是A的服务在后台做了一个代理,前端只需要访问A的服务器也就相当与访问了B的服务器。(之前我们前端开发就是用nginx在本地搭代理服务器)
网友评论