nginx 配置解决前端跨域问题

这篇具有很好参考价值的文章主要介绍了nginx 配置解决前端跨域问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、为什么会出现跨域问题
       出于浏览器的同源策略限制。同源策略(Sameoriginpolicy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。同源策略会阻止一个域的。javascript脚本和另外一个域的内容进行交互。所谓同源(即指在同一个域)就是两个页面具有相同的协议(protocol),主机(host)和端口号(port。

二、什么是跨域
1.当一个请求url的协议、域名、端口三者之间任意一个与当前页面url不同即为跨域。

nginx 是静态页面的web服务器,服务器与服务器之间访问是不存在跨域的,所以通过nginx服务器去代理访问后端服务就不会跨域,跨域只在本地会出现,线上的地址访问不会出现跨域的。

nginx.conf 文件配置:

#user  nobody;

worker_processes  1;

#error_log  logs/error.log;

#error_log  logs/error.log  notice;

#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


 

events {

    worker_connections  1024;

}文章来源地址https://www.toymoban.com/news/detail-421238.html


 

http {

    include       mime.types;

    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '

    #                  '$status $body_bytes_sent "$http_referer" '

    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;

    #tcp_nopush     on;

    #keepalive_timeout  0;

    keepalive_timeout  65;

    #gzip  on;

    server {

        listen       80;

        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {

            #root   html;

             # 此处注意地址为指向你本地启动的前端项目的目录(即你的本地前端项目的所在地址,注意nginx用的是反斜杠/),如果是vue项目就是index.html的上一级目录(前端启动axios请求的baseURL = '',配置好后前端访问不要访问启动的项目地址,直接访问nginx代理地址:127.0.0.1,因为是本地启动的nginx,所以直接访问127,nginx默认端口是80),如果是静态的html项目,也是index.html的上一级目录.

#如果发布线上的项目配置的nginx这里就是存放的是vue打包后dist包的地址的上一层目录,也就是说vue前端包放在html目录的下面

            root   D:/abc/H5/html;

            index  index.html index.html;

        }

#下面就是配置的需要代理的后端接口的服务地址,表示所有以/custom/开头的接口请求服务代理到http://10.18.21.124:8888上,返回相应的数据

        location /custom/ {

        proxy_pass http://10.18.21.124:8888;

        }

        location /ram/ {

        proxy_pass http://10.18.21.124:8888;

        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html

        #

        error_page   500 502 503 504  /50x.html;

        location = /50x.html {

            root   html;

        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80

        #

        #location ~ \.php$ {

        #    proxy_pass   http://127.0.0.1;

        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

        #

        #location ~ \.php$ {

        #    root           html;

        #    fastcgi_pass   127.0.0.1:9000;

        #    fastcgi_index  index.php;

        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;

        #    include        fastcgi_params;

        #}

        # deny access to .htaccess files, if Apache's document root

        # concurs with nginx's one

        #

        #location ~ /\.ht {

        #    deny  all;

        #}

    }


 

    # another virtual host using mix of IP-, name-, and port-based configuration

    #

    #server {

    #    listen       8000;

    #    listen       somename:8080;

    #    server_name  somename  alias  another.alias;

    #    location / {

    #        root   html;

    #        index  index.html index.htm;

    #    }

    #}


 

    # HTTPS server

    #

    #server {

    #    listen       443 ssl;

    #    server_name  localhost;

    #    ssl_certificate      cert.pem;

    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;

    #    ssl_session_timeout  5m;

    #    ssl_ciphers  HIGH:!aNULL:!MD5;

    #    ssl_prefer_server_ciphers  on;

    #    location / {

    #        root   html;

    #        index  index.html index.htm;

    #    }

    #}

}

前端启动axios请求的baseURL = '',配置好后前端访问不要访问启动的项目地址,直接访问nginx代理地址:127.0.0.1,因为是本地启动的nginx,nginx已经指向启动的前端项目,所以直接访问127.0.0.1,nginx默认端口是80

二 如果是vue项目可以直接在vue.config.js里面配置

例如:

const url = 'http://30.11.20.99:8888'  // 连接后端接口的服务地址

// const url = 'http://localhost:8080'

const CompressionWebpackPlugin = require('compression-webpack-plugin')

const productionGzipExtensions = ['js', 'css', 'less', 'html', 'png', 'svg', 'jpg', 'json', 'ico', 'txt']

const px2rem = require('postcss-px2rem')

const postcss = px2rem({

  remUnit: 10

})

module.exports = {

  // publicPath: process.env.VUE_APP_ENVIRONMENT === 'XG_prod' ? '/lggy' : '/',

  publicPath: '/',

  outputDir: 'dist',

  productionSourceMap: false,

  configureWebpack: {

    plugins: [

      new CompressionWebpackPlugin({

        asset: '[path].gz[query]',

        algorithm: 'gzip',

        test: new RegExp('\\.(' + productionGzipExtensions.join('|') + ')$'),

        threshold: 10240,

        minRatio: 0.8

      })

    ]

  },

  css: {

    loaderOptions: {

      less: {

        modifyVars: {

          'primary-color': '#28439d'

          // 'link-color': '#1DA57A',

          // 'border-radius-base': '2px',

          // 'layout-header-background': '#1890ff',

          // 'menu-dark-submenu-bg': '#00508e'

        },

        javascriptEnabled: true,

        postcss: {

          plugins: [

            postcss

          ]

        }

      }

    }

  },

  devServer: {

    disableHostCheck: true,

    proxy: {

      '/auth': {

        target: url,

        changeOrigin: true

      },

      '/meta': {

        target: url,

        changeOrigin: true

      },

      '/report': {

        target: url,

        changeOrigin: true

      },

      '/ram': {

        target: url,

        changeOrigin: true

      },

      '/custom': {

        target: url,

        changeOrigin: true

      },

      '/os-public': {

        // target: 'http://10.18.36.130:8888',

        target: 'http://10.18.21.124:8888',

        changeOrigin: true

      },

      '/dw-api': {

        target: 'http://47.100.53.88:9090',

        changeOrigin: true

      }

    }

  },

  lintOnSave: true

}

到了这里,关于nginx 配置解决前端跨域问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序多图列表页面性能问题为什么会出现?如何解决?

    微信小程序中的多图列表页面性能问题主要是由于以下几个原因导致的: 图片过大:在多图列表页面中,如果图片过大,会导致页面加载时间过长,从而影响用户体验。 请求过多:在多图列表页面中,如果一次请求加载过多的图片,会导致请求次数过多,从而影响页面加载

    2024年03月25日
    浏览(62)
  • 巧用Nginx配置解决跨域问题

    1,前端页面放在域名根目录,比如,http://www.xuecheng.com/ ,对应的nginx配置: 页面目录: 2,前端请求接口路径,在域名后面加一个目录 nginx 对api接口配置 其中的 $http_origin并不是nginx的内置参数,nginx支持取自定义的参数值,$http_XXX这个格式是nginx取请求中header的XXX的值的。这

    2023年04月11日
    浏览(40)
  • 初涉后端--为什么postman能够成功获取后端数据,前端项目却不能获取后端数据(已解决)

    刚学完前端,这几天初涉了一下后端,一开始就碰壁了,用写好的前端项目怎么都连接不上后端,但是奇怪的是明明postman可以成功请求到后端的数据 后端代码 postman测试结果,成功 前端网络提示 但是我注意到了前端响应状态为200,说明二者可能其实是连接上了的 最后通过查

    2024年02月02日
    浏览(68)
  • Nginx配置反向代理解决跨域问题

    一、下载 官网下载地址:http://nginx.org/en/download.html 我下载的版本:http://nginx.org/download/nginx-1.15.2.zip (我也是参考网上的步骤,所以下载的不是最新版) 二、解压 将文件解压到本地地址(地址尽量不要出现中文) 三、启动 使用cmd进入nginx.exe所在文件夹下,并执行start nginx

    2024年02月07日
    浏览(46)
  • 【Redis】-使用Lua脚本解决多线程下的超卖问题以及为什么?

    一.多线程下引起的超卖问题呈现 1.1.我先初始化库存数量为1、订单数量为0 1.2.然后我开启3个线程去执行业务 业务为:判断如果说库存数量大于0,则库存减1,订单数量加1 结果为:库存为-2,订单数量为3 原因:如下图所示,这是因为分别有6个指令(3个库存减1指令,3个订单

    2024年02月03日
    浏览(54)
  • 【人工智能】为什么说大模型会有「幻觉」问题,又如何去解决呢

    大家好,我是全栈小5,欢迎阅读文章! 此篇是【话题达人】序列文章,这一次的话题是《如何解决大模型的幻觉问题》 先来了解基本术语和缩写全称,比如LLM。 LLM是Large Language Model的缩写,指的是一种 大规模语言模型 ,可以用来为许多自然语言处理(Natural Language Processing

    2024年02月03日
    浏览(53)
  • nginx 配置访问地址和解决跨域问题(反向代理)

    1、配置访问地址(通过ip访问) 2、解决跨域问题(反向代理) 问题:前端页面(端口30的ip)需要去访问一个43端口的后端接口,属于跨域问题;

    2024年04月09日
    浏览(50)
  • 现在都在说 Docker 好,为什么我一用就出现这么多问题?查了一宿才解决!

    #配置国内源进行docker安装 报错 HTTP Error 404 - Not Found 原因:由于配置国内镜像源时,把地址写错了,导致后面安装docker提示HTTP Error 404 解决方法: 1)进入到 /etc/yum.repos.d目录下   如果你想学习docker教程,我这边给你推荐一套视频,这个视频可以说是B站播放全网第一的docker教

    2024年02月11日
    浏览(46)
  • 为什么区域中找不到无线网络 如何解决区域中找不到无线网络的问题

    区域中找不到无线网络解决办法,无线网朋友这里可以找到答案。 电脑无线上网提示“区域中找不到无线网络”怎么办? 案例分析一: 笔记本电脑之前好好的,突然不能使用无线网络了,提示“区域中找不到无线网络”。主要有如下三个问题: 一、event log被360禁用了,启用

    2024年02月06日
    浏览(73)
  • 前端为什么发请求没有携带cookie?

    在前端发送请求时,如果想要携带 cookie,通常只能携带存储在与请求域名相同路径的 cookie。这是由浏览器的同源策略所决定的。 同源策略要求请求的域名、协议和端口都必须一致,否则浏览器会限制跨域请求的权限。当浏览器发送跨域请求时,默认情况下不会自动携带 co

    2024年02月06日
    浏览(95)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包