什么是跨域?
浏览器从一个域名的网页去请求另一个域名的资源时,域名、端口、协议任一不同,都是跨域
域名:
主域名不同 http://www.baidu.com/index.html –>http://www.sina.com/test.js
子域名不同 http://www.666.baidu.com/index.html –>http://www.555.baidu.com/test.js
域名和域名ip http://www.baidu.com/index.html –>http://180.149.132.47/test.js
端口:
http://www.baidu.com:8080/index.html–> http://www.baidu.com:8081/test.js
协议:
http://www.baidu.com:8080/index.html–> https://www.baidu.com:8080/test.js
备注:
1、端口和协议的不同,只能通过后台来解决
2、localhost和127.0.0.1虽然都指向本机,但也属于跨域
nginx如何解决跨域问题
方法一:
配置反向代理
但是在生产环境中这样配置就直接跳往别的域名去了。
方法二:
配置跨域请求
在nginx配置文件里添加以下代码
#响应头(跨域)
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Credentials true;
add_header Access-Control-Allow-Headers X-Requested-With;
add_header Access-Control-Allow-Methods GET,POST,OPTIONS;
当然如果在阿里云上是可以通过阿里云后台来配置跨域的,配置OSS管理控制台来实现跨域访问。
nginx配置直接配置跨域有时还是不能访问其他资源,需要改动后台代码来实现。