资讯专栏INFORMATION COLUMN

跨域解决方案(史上最易懂)

wh469012917 / 3036人阅读

摘要:跨域总结跨域思路跨域解决方案一般分为两种前端解决,后端解决前端解决方案通过前端解决的思想就是,通过设置中间件把跨域的请求转发一下,其实就是反向代理,比如想要访问豆瓣的接口很会有跨域问题,但是如果请求的是就不存在跨域反向代理就是截取之后的请求

跨域总结 1.跨域思路

跨域解决方案一般分为两种:前端解决,后端解决

1.1 前端解决方案

通过前端解决的思想就是,通过设置中间件把跨域的请求转发一下,其实就是反向代理,
比如 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/ 服务器上

vue react等项目 可以使用 http-proxy-middleware

普通项目 就是以下介绍的 本地安装nginx 反向代理跨域

1.2 后端解决方案

后端解决方案,一般是需要后端参与

jsonp 回调函数

CORS 需要后端加头部 但并不是所有浏览器都支持

2.本地配置nginx解决跨域 2.1 mac/vmware/设置共享文件

在虚拟机上找到设置,选择共享文件夹

mac vmware想使用共享文件必须安装vmware-tools

2.1 在虚拟机关闭状态下,选择虚拟机,安装vmware-tools
2.2 在ubuntu中直接使用 apt 安装 之后会介绍

安装vmware-tools之后查看 mnt文件下是否有hgfs文件

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 为你设置的共享目录

2.2 配置nginx 2.2.1 修改nginx默认服务器根目录

修改配置文件位置: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;
}
2.2.2 访问http://XXX 查看配置是否生效(403错误)

403错误可能有两种情况,不要误以为真的没有权限

配置的共享文件下是否有indx.html,没有的话会报错403 Forbidden

真的没有权限 需要修改一下配置 chrod 修改权限

解决Nginx出现403 forbidden

相当良心的解决方案

2.2.3 配置反向代理

我用的豆瓣随便的一个接口来测试的

location /api{
    # 重写
    rewrite  ^.+api/?(.*)$ /$1 break;
    # 配置代理
    proxy_pass   https://api.douban.com;
}
2.3 测试跨域



    
    
    Title


2.4 浏览器测试跨域,跨域成功 跨域总结 1.跨域思路

跨域解决方案一般分为两种:前端解决,后端解决

1.1 前端解决方案

通过前端解决的思想就是,通过设置中间件把跨域的请求转发一下,其实就是反向代理,
比如 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/ 服务器上

vue react等项目 可以使用 http-proxy-middleware

普通项目 就是以下介绍的 本地安装nginx 反向代理跨域

1.2 后端解决方案

后端解决方案,一般是需要后端参与

jsonp 回调函数

CORS 需要后端加头部 但并不是所有浏览器都支持

2.本地配置nginx解决跨域 2.1 mac/vmware/设置共享文件

在虚拟机上找到设置,选择共享文件夹

mac vmware想使用共享文件必须安装vmware-tools

2.1 在虚拟机关闭状态下,选择虚拟机,安装vmware-tools
2.2 在ubuntu中直接使用 apt 安装 之后会介绍

安装vmware-tools之后查看 mnt文件下是否有hgfs文件

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 为你设置的共享目录

2.2 配置nginx 2.2.1 修改nginx默认服务器根目录

修改配置文件位置: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;
}
2.2.2 访问http://XXX 查看配置是否生效(403错误)

403错误可能有两种情况,不要误以为真的没有权限

配置的共享文件下是否有indx.html,没有的话会报错403 Forbidden

真的没有权限 需要修改一下配置 chrod 修改权限

解决Nginx出现403 forbidden

相当良心的解决方案

2.2.3 配置反向代理

我用的豆瓣随便的一个接口来测试的

location /api{
    # 重写
    rewrite  ^.+api/?(.*)$ /$1 break;
    # 配置代理
    proxy_pass   https://api.douban.com;
}
2.3 测试跨域



    
    
    Title


2.4 浏览器测试跨域,跨域成功

Snip20180805_2.png

Snip20180805_3.png

Snip20180805_4.png

Snip20180805_5.png

Snip20180805_6.png

Snip20180805_7.png

参考

安装vmtools之后在/mnt目录下没有hgfs文件夹

vmware设置共享文件夹

虚拟机找不到/mnt/hgfs挂载目录

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/40038.html

相关文章

  • 上最详细Python学习路线-从入门到精通,只需90天

    摘要:针对的初学者,从无到有的语言如何入门,主要包括了的简介,如何下载,如何安装,如何使用终端,等各种开发环境进行开发,中的语法和基本知识概念和逻辑,以及继续深入学习的方法。 ...

    gghyoo 评论0 收藏0
  • 架构~微服务

    摘要:接下来继续介绍三种架构模式,分别是查询分离模式微服务模式多级缓存模式。分布式应用程序可以基于实现诸如数据发布订阅负载均衡命名服务分布式协调通知集群管理选举分布式锁和分布式队列等功能。 SpringCloud 分布式配置 SpringCloud 分布式配置 史上最简单的 SpringCloud 教程 | 第九篇: 服务链路追踪 (Spring Cloud Sleuth) 史上最简单的 S...

    xinhaip 评论0 收藏0
  • 架构~微服务 - 收藏集 - 掘金

    摘要:它就是史上最简单的教程第三篇服务消费者后端掘金上一篇文章,讲述了通过去消费服务,这篇文章主要讲述通过去消费服务。概览和架构设计掘金技术征文后端掘金是基于的一整套实现微服务的框架。 Spring Boot 配置文件 – 在坑中实践 - 后端 - 掘金作者:泥瓦匠链接:Spring Boot 配置文件 – 在坑中实践版权归作者所有,转载请注明出处本文提纲一、自动配置二、自定义属性三、ran...

    church 评论0 收藏0
  • 上最简单的SpringCloud教程 | 第四篇:断路器(Hystrix)

    摘要:为了保证其高可用,单个服务又必须集群部署。为了解决这个问题,就出现断路器模型。一断路器简介摘自官网已经创建了一个名为的库来实现断路器模式。较底层的服务如果出现故障,会导致连锁故障。当对特定的服务的调用达到一个阀值是秒次断路器将会被打开。 转载请标明出处: http://blog.csdn.net/forezp/a...本文出自方志朋的博客 在微服务架构中,我们将业务拆分成一个个的服务,...

    Hydrogen 评论0 收藏0
  • angular - 收藏集 - 掘金

    摘要:如何在中使用动画前端掘金本文讲一下中动画应用的部分。与的快速入门指南推荐前端掘金是非常棒的框架,能够创建功能强大,动态功能的。自发布以来,已经广泛应用于开发中。 如何在 Angular 中使用动画 - 前端 - 掘金本文讲一下Angular中动画应用的部分。 首先,Angular本生不提供动画机制,需要在项目中加入Angular插件模块ngAnimate才能完成Angular的动画机制...

    AlexTuan 评论0 收藏0

发表评论

0条评论

wh469012917

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<