首先说一下什么是js跨域问题:
js跨域指的是js在不同域之间进行数据传输或通信,域名、端口、协议任何一个不同都会被认为是不同域,由于javascript安全策略中的同源策略限制了跨域所以会导致这种通信不被允许。
以下表格形象地描述了各种场景:
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 | 同一域名,不同协议 | 不允许 |
http://www.a.com/a.js http://70.32.92.74/b.js | 域名和域名对应ip | 不允许 |
http://www.a.com/a.js http://script.a.com/b.js | 主域相同,子域不同 | 不允许 |
http://www.a.com/a.js http://a.com/b.js | 同一域名,不同二级域名(同上) | 不允许(cookie这种情况下也不允许访问) |
http://www.cnblogs.com/a.js http://www.a.com/b.js | 不同域名 | 不允许 |
location /service {
proxy_pass http://127.0.0.1:8080/service;
}
location /loginService {
proxy_pass http://127.0.0.1:8080/loginService;
}
location /mobileService {
proxy_pass http://127.0.0.1:8080/mobileService;
}
proxy_pass http://127.0.0.1:8080/service;
}
location /loginService {
proxy_pass http://127.0.0.1:8080/loginService;
}
location /mobileService {
proxy_pass http://127.0.0.1:8080/mobileService;
}
配置了这些之后,我们本来要访问jetty的url,端口改为nginx对应的端口就能正常访问了。