1,什么是同源策略,跨域请求
1.浏览器从一个域名的网页去请求另一个域名的资源时,域名、端口、协议任一不同,都是跨域.
2.只要协议、域名、端口有任何一个不同,都被当作是不同的域,之间的请求就是跨域操作。
2,解决方案
1,jsonp
1, script标签会把请求文件里所有的内容都当做字符串当作JS代码处理。
script标签不受同源策略影响,想请求谁的服务器都行
2,cors跨域 别人服务器允许自己访问
在服务器端设置允许访问自己的服务器
res.header(‘Access-Control-Allow-Origin’, ‘http://localhost:3001’);
header(…) 允许那些域名访问
res.header(‘Access-Control-Allow-Methods’, ‘GET,PUT,POST,DELETE’);
header(…) 允许哪些请求方式
res.header(‘Access-Control-Allow-Headers’, ‘Content-Type’);
header(…) 允许哪些请求头
3,代理(正向代理)
访问代理服务器,代理服务器访问目标服务器,服务器和服务器之间不存在同源策略
例子:
使用nignx代理服务器 切换5.4.45nignx服务器
-
打开 phpstudy 窗口
=> 点击切换版本
=> 点击 php5.4.xxx + nginx -
打开 phpstudy 窗口
=> 点击其他选项菜单
=> 点击打开配置文件
=> 点击 nginx-conf(config)
-> 大概在 56 行左右有一个 server
-> 顺着开始括号找到 server 的闭合大括号
-> 在这个闭合大括号的上面一行书写代理配置
=> 代理配置
-> /gx 是你们自己定的, 些什么都可以, 这个就是代理标识符
-> 斜线也是必须要有
-> {} 里面的那个地址, 就是你要跨域请求的地址(目标服务器的地址)
-> 最后的分号必须有
location = /gx {
proxy_pass http://127.0.0.1/server/proxy.php;
}
-> 修改完毕以后, 一定要重启服务器
=> 当你在 ningx 服务器上发送请求
-> 只要请求你自己写的 代理标识符
-> 那么就会由 nginx 服务器来帮你转发请求到 proxy_pass 地址注意:
- 当你切换到 nginx 服务器以后
- 不管是 html 文件还是 php 文件, 都不能用中文了
=> 只要是中文就报错了
*/