现象
在写一个前端页面时(http://127.0.0.1:2001),新接口无法跨域请求(http://examples.com/api),但原来的接口(同一站点同一项目)却正常,后端没时间查原因,只有自己想办法
原因
浏览器有一个最基本的安全策略,叫同源策略,具体是指协议+域名+端口三者相同,有一项不同则是非同源。如果没有同源策略,浏览器很容易受到XSS,CSFR攻击。
而浏览器对于跨域请求,当然是禁止的
无法跨域.png
常见的示例
解决思路
在前端Nginx上配置代理转发,配置http://127.0.0.1:2001/api的访问,转发到http://examples.com/api上即可,部分代码
server {
listen 2001;
server_name 127.0.0.1;
location / {
root D:\web;
index index.html index.php;
}
location /api/ {
proxy_pass http://examples.com/api/;
}
}
其它办法
后端代码修改Access-Control-Allow-Origin的值,实现跨域,不同语言讲法会有差异,但思路一致
Access-Control-Allow-Origin:http://examples.com
网友评论