前后端分离开发,导致前端项目需要跨域请求后端接口,解决方法有很多,本文只介绍两个:

1. 修改后端程序代码实现允许跨域请求

2. 修改服务器配置文件实现允许跨域请求

正文:

方法1:修改后端程序代码实现允许跨域请求 

以ThinkPHP为例,为了一劳永逸,直接在入口文件index.php中加入代码:

  1. header("Access-Control-Allow-Origin: *");  // 可以把星号换成指定域名带http或https
  2. header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, Authorization");
  3. header('Access-Control-Allow-Methods: GET,POST,PUT,DELETE,OPTIONS,PATCH');

方法2:修改服务器配置文件实现允许跨域请求

Nginx配置(实现了允许多个指定域名而不是允许所有域名)

在要允许跨域的站点配置的server段中添加代码

  1. server
  2. {
  3. #begin 允许指定域名跨域访问,根据自己情况修改
  4. #不要用tab代替空格
  5. set $cors_origin "";
  6. if ($http_origin ~* "^https://a.example.com$") {
  7. set $cors_origin $http_origin;
  8. }
  9. #允许本地vue项目跨域访问
  10. if ($http_origin ~* "^http://localhost:8080$") {
  11. set $cors_origin $http_origin;
  12. }
  13. add_header Access-Control-Allow-Origin $cors_origin;
  14. #end 允许指定域名跨域访问,根据自己情况修改
  15.  
  16. listen 80;
  17. listen 443 ssl http2;
  18. ...
  19. }

Apache配置(本地开发环境是WAMPServer,所以也要让本地的Apache也接受跨域请求)

在httpd.conf文件中解除LoadModule headers_module modules/mod_headers.so的注释

在站点配置块(可能是httpd-vhost.conf文件中)添加代码

  1. #
  2. <VirtualHost *:80>
  3. ServerName localhost.a
  4. DocumentRoot "e:/projects/a/www/public"
  5. <Directory "e:/projects/a/www/public/">
  6. Options +Indexes +Includes +FollowSymLinks +MultiViews
  7. AllowOverride All
  8. Require local
  9. #上面的内容我们是不一样的
  10. #添加下面这行允许跨域访问
  11. Header set Access-Control-Allow-Origin *
  12. </Directory>
  13. </VirtualHost>

注:我的nginx版本是1.16.0,apache版本是2.4.39,以上方法亲测有效。

配置Nginx和Apache允许指定域名CORS跨域访问的更多相关文章

  1. Asp.Net WebApi 启用CORS跨域访问指定多个域名

    1.后台action指定 EnableCors指定可访问的域名多个,使用逗号隔开 //支持客户端凭据提交,指定多个域名,使用逗号隔开 [EnableCors("http://localhos ...

  2. spring boot / cloud (六) 开启CORS跨域访问

    spring boot / cloud (六) 开启CORS跨域访问 前言 什么是CORS? Cross-origin resource sharing(跨域资源共享),是一个W3C标准,它允许你向一 ...

  3. Asp.Net WebApi+Microsoft.AspNet.WebApi.Core 启用CORS跨域访问

    WebApi中启用CORS跨域访问 1.安装 Nugget包Microsoft.AspNet.WebApi.Cors This package contains the components to e ...

  4. Spring Boot 2中对于CORS跨域访问的快速支持

    原文:https://www.jianshu.com/p/840b4f83c3b5 目前的程序开发,大部分都采用前后台分离.这样一来,就都会碰到跨域资源共享CORS的问题.Spring Boot 2 ...

  5. Nginx作为静态资源web服务之跨域访问

    Nginx作为静态资源web服务之跨域访问 首先了解一下什么是跨域 跨域,指的是浏览器不能执行其他网站的脚本.它是由浏览器的同源策略造成的,是浏览器施加的安全限制. 所谓同源是指,域名,协议,端口均相 ...

  6. Springboot CORS跨域访问

    Springboot CORS跨域访问 什么是跨域 浏览器的同源策略限制: 它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响.可以说Web是构建在同源策略基础 ...

  7. SpringBoot学习(3)-SpringBoot添加支持CORS跨域访问

    SpringBoot学习(3)-SpringBoot添加支持CORS跨域访问 https://blog.csdn.net/yft_android/article/details/80307672

  8. nginx介绍(六) - 通过反向代理实现跨域访问

    前言 跨域访问问题, 相信很多人都遇到过, 并且都用不同的办法去解决过. 方法有很多种, 不一一叙述了. 这里主要使用nginx反向代理来解决跨域问题. 啥是跨域 假如你是百度开发人员, 在百度页面去 ...

  9. Spring MVC 4.2 CORS 跨域访问

    跨站 HTTP 请求(Cross-site HTTP request)是指发起请求的资源所在域不同于该请求所指向资源所在的域的 HTTP 请求.比如说,域名A(http://domaina.examp ...

随机推荐

  1. CodeForces-520E Pluses everywhere

    题目描述 给出一个长度为 \(n\) 的字符串,给出一个非负整数 \(k\),要求给这个字符串中间添加 \(k\) 个$\(+\)'号,变成一个表 达式,比如"\(1000101\)&quo ...

  2. 拉勾网python开发要求爬虫

    #今日目标 **拉勾网python开发要求爬虫** 今天要爬取的是北京python开发的薪资水平,招聘要求,福利待遇以及公司的地理位置. 通过实践发现除了必须携带headers之外,拉勾网对ip访问频 ...

  3. Django之AJAX传输JSON数据

    目录 Django之AJAX传输JSON数据 AJAX 中 JSON 数据传输: django响应JSON类型数据: django 响应 JSON 类型数据: Django之AJAX传输JSON数据 ...

  4. JS判断当前页面是在 QQ客户端/微信客户端/iOS浏览器/Android浏览器/PC客户端

    browser.js var browser = { versions: function () { var u = navigator.userAgent, app = navigator.appV ...

  5. 运维dig语法

    dig命令是常用的域名查询工具,可以用来测试域名系统工作是否正常 语法 1 dig(选项)(参数) 选项 1 @<服务器地址>:指定进行域名解析的域名服务器: 2 -b<ip地址&g ...

  6. 可以提升幸福感的js小技巧(下)

    4.数字 4.1 不同进制表示法 ES6中新增了不同进制的书写格式,在后台传参的时候要注意这一点. 29 // 10进制 035 // 8进制29 原来的方式 0o35 // 8进制29 ES6的方式 ...

  7. JS判断页面是否为浏览器当前页

    function currentPage() { var hiddenProperty = 'hidden' in document ? 'hidden' : 'webkitHidden' in do ...

  8. mysql主从库配置读写分离以及备份

    1,什么是读写分离?其实就是将数据库分为了主从库,一个主库用于写数据,多个从库完成读数据的操作,主从库之间通过某种机制进行数据的同步,是一种常见的数据库架构.一个组从同步集群,通常被称为是一个“分组” ...

  9. git 分支 版本回退

    本地回退: git reset --hard HEAD~ 回退后推送到远程: git push --force .

  10. Linux系统中的硬件问题如何排查?(3)

    Linux系统中的硬件问题如何排查?(3) 2013-03-27 10:32 核子可乐译 51CTO.com 字号:T | T 在Linux系统中,对于硬件故障问题的排查可能是计算机管理领域最棘手的工 ...