跨域解决方案通常分为两种:前端解决,后端解决javascript
经过前端解决的思想就是,经过设置中间件把跨域的请求转发一下,其实就是反向代理,
好比 http://1.2.3.4:8099 想要访问豆瓣的接口 http://www.douban.com/v?a=1很...
会有跨域问题,可是若是请求的是http://1.2.3.4:8099/api/v?a=1 就不存在跨域html
反向代理就是截取 /api 以后的请求 转发到http://www.douban.com/ 服务器上前端
后端解决方案,通常是须要后端参与vue
2.1 在虚拟机关闭状态下,选择虚拟机,安装vmware-tools
2.2 在ubuntu中直接使用 apt 安装 以后会介绍java
3.1 有hgfs说明已经有共享文件的挂载点
3.2 若是没有hgfs文件 说明安装的vm-tools可能和ubuntu版本有冲突react
# 查看当前设置的共享文件 #sudo vmware-hgfsclient # 上述命令可能因为没有安装包报错,因此先安装一下包 # apt-get install open-vm-tools # apt-get install open-vm-tools-desktop # apt-get install open-vm-tools-dkms # 本身手动建立hgfs并挂载 # mkdir /mnt/hgfs # vmhgfs-fuse .host:/ /mnt/hgfs # 使用文件查看是否有权限进入 /mnt/hgfs 若是没有使用一下命令 # sudo vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other -o nonempty # 每次进入系统都须要本身mount 能够配置/etc/fstab .host:/ /mnt/hgfs vmhgfs defaults 0 0
完成以上步骤,你会发现 /mnt/hgfs/XXX XX 为你设置的共享目录jquery
修改配置文件位置:vim /etc/nginx/sites-available/defaultnginx
location / { # 配置共享文件的位置 root /mnt/hgfs/ftp; # First attempt to serve request as file, then # as directory, then fall back to displaying a 404. try_files $uri $uri/ =404; }
403错误可能有两种状况,不要误觉得真的没有权限ajax
至关良心的解决方案
我用的豆瓣随便的一个接口来测试的
location /api{ # 重写 rewrite ^.+api/?(.*)$ /$1 break; # 配置代理 proxy_pass https://api.douban.com; }
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <script src="jquery.js"></script> <title>Title</title> </head> <body> <div> <button id="btn1">测试跨域</button> <div id="content"></div> </div> <script type="text/javascript"> $(document).ready(function () { $("#btn1").click(function () { // 全部豆瓣请求都以 /api 开始 注意相对绝对路径 $.get("/api/v2/book/1220562", function (data, status) { alert("数据: " + JSON.stringify(data) + "\n状态: " + status); $("#content").html(JSON.stringify(data)) }); }); }); </script> </body> </html>
跨域解决方案通常分为两种:前端解决,后端解决
经过前端解决的思想就是,经过设置中间件把跨域的请求转发一下,其实就是反向代理,
好比 http://1.2.3.4:8099 想要访问豆瓣的接口 http://www.douban.com/v?a=1很...
会有跨域问题,可是若是请求的是http://1.2.3.4:8099/api/v?a=1 就不存在跨域
反向代理就是截取 /api 以后的请求 转发到http://www.douban.com/ 服务器上
后端解决方案,通常是须要后端参与
2.1 在虚拟机关闭状态下,选择虚拟机,安装vmware-tools
2.2 在ubuntu中直接使用 apt 安装 以后会介绍
3.1 有hgfs说明已经有共享文件的挂载点
3.2 若是没有hgfs文件 说明安装的vm-tools可能和ubuntu版本有冲突
# 查看当前设置的共享文件 #sudo vmware-hgfsclient # 上述命令可能因为没有安装包报错,因此先安装一下包 # apt-get install open-vm-tools # apt-get install open-vm-tools-desktop # apt-get install open-vm-tools-dkms # 本身手动建立hgfs并挂载 # mkdir /mnt/hgfs # vmhgfs-fuse .host:/ /mnt/hgfs # 使用文件查看是否有权限进入 /mnt/hgfs 若是没有使用一下命令 # sudo vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other -o nonempty # 每次进入系统都须要本身mount 能够配置/etc/fstab .host:/ /mnt/hgfs vmhgfs defaults 0 0
完成以上步骤,你会发现 /mnt/hgfs/XXX XX 为你设置的共享目录
修改配置文件位置:vim /etc/nginx/sites-available/default
location / { # 配置共享文件的位置 root /mnt/hgfs/ftp; # First attempt to serve request as file, then # as directory, then fall back to displaying a 404. try_files $uri $uri/ =404; }
403错误可能有两种状况,不要误觉得真的没有权限
至关良心的解决方案
我用的豆瓣随便的一个接口来测试的
location /api{ # 重写 rewrite ^.+api/?(.*)$ /$1 break; # 配置代理 proxy_pass https://api.douban.com; }
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <script src="jquery.js"></script> <title>Title</title> </head> <body> <div> <button id="btn1">测试跨域</button> <div id="content"></div> </div> <script type="text/javascript"> $(document).ready(function () { $("#btn1").click(function () { // 全部豆瓣请求都以 /api 开始 注意相对绝对路径 $.get("/api/v2/book/1220562", function (data, status) { alert("数据: " + JSON.stringify(data) + "\n状态: " + status); $("#content").html(JSON.stringify(data)) }); }); }); </script> </body> </html>
Snip20180805_2.png
Snip20180805_3.png
Snip20180805_4.png
Snip20180805_5.png
Snip20180805_6.png
Snip20180805_7.png