配置Nginx和Apache允许指定域名CORS跨域访问
前后端分离开发,导致前端项目需要跨域请求后端接口,解决方法有很多,本文只介绍两个:
1. 修改后端程序代码实现允许跨域请求
2. 修改服务器配置文件实现允许跨域请求
正文:
方法1:修改后端程序代码实现允许跨域请求
以ThinkPHP为例,为了一劳永逸,直接在入口文件index.php中加入代码:
header("Access-Control-Allow-Origin: *"); // 可以把星号换成指定域名带http或https
header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, Authorization");
header('Access-Control-Allow-Methods: GET,POST,PUT,DELETE,OPTIONS,PATCH');
方法2:修改服务器配置文件实现允许跨域请求
Nginx配置(实现了允许多个指定域名而不是允许所有域名)
在要允许跨域的站点配置的server段中添加代码
server
{
#begin 允许指定域名跨域访问,根据自己情况修改
#不要用tab代替空格
set $cors_origin "";
if ($http_origin ~* "^https://a.example.com$") {
set $cors_origin $http_origin;
}
#允许本地vue项目跨域访问
if ($http_origin ~* "^http://localhost:8080$") {
set $cors_origin $http_origin;
}
add_header Access-Control-Allow-Origin $cors_origin;
#end 允许指定域名跨域访问,根据自己情况修改 listen 80;
listen 443 ssl http2;
...
}
Apache配置(本地开发环境是WAMPServer,所以也要让本地的Apache也接受跨域请求)
在httpd.conf文件中解除LoadModule headers_module modules/mod_headers.so的注释
在站点配置块(可能是httpd-vhost.conf文件中)添加代码
#
<VirtualHost *:80>
ServerName localhost.a
DocumentRoot "e:/projects/a/www/public"
<Directory "e:/projects/a/www/public/">
Options +Indexes +Includes +FollowSymLinks +MultiViews
AllowOverride All
Require local
#上面的内容我们是不一样的
#添加下面这行允许跨域访问
Header set Access-Control-Allow-Origin *
</Directory>
</VirtualHost>
注:我的nginx版本是1.16.0,apache版本是2.4.39,以上方法亲测有效。
配置Nginx和Apache允许指定域名CORS跨域访问的更多相关文章
- Asp.Net WebApi 启用CORS跨域访问指定多个域名
1.后台action指定 EnableCors指定可访问的域名多个,使用逗号隔开 //支持客户端凭据提交,指定多个域名,使用逗号隔开 [EnableCors("http://localhos ...
- spring boot / cloud (六) 开启CORS跨域访问
spring boot / cloud (六) 开启CORS跨域访问 前言 什么是CORS? Cross-origin resource sharing(跨域资源共享),是一个W3C标准,它允许你向一 ...
- Asp.Net WebApi+Microsoft.AspNet.WebApi.Core 启用CORS跨域访问
WebApi中启用CORS跨域访问 1.安装 Nugget包Microsoft.AspNet.WebApi.Cors This package contains the components to e ...
- Spring Boot 2中对于CORS跨域访问的快速支持
原文:https://www.jianshu.com/p/840b4f83c3b5 目前的程序开发,大部分都采用前后台分离.这样一来,就都会碰到跨域资源共享CORS的问题.Spring Boot 2 ...
- Nginx作为静态资源web服务之跨域访问
Nginx作为静态资源web服务之跨域访问 首先了解一下什么是跨域 跨域,指的是浏览器不能执行其他网站的脚本.它是由浏览器的同源策略造成的,是浏览器施加的安全限制. 所谓同源是指,域名,协议,端口均相 ...
- Springboot CORS跨域访问
Springboot CORS跨域访问 什么是跨域 浏览器的同源策略限制: 它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响.可以说Web是构建在同源策略基础 ...
- SpringBoot学习(3)-SpringBoot添加支持CORS跨域访问
SpringBoot学习(3)-SpringBoot添加支持CORS跨域访问 https://blog.csdn.net/yft_android/article/details/80307672
- nginx介绍(六) - 通过反向代理实现跨域访问
前言 跨域访问问题, 相信很多人都遇到过, 并且都用不同的办法去解决过. 方法有很多种, 不一一叙述了. 这里主要使用nginx反向代理来解决跨域问题. 啥是跨域 假如你是百度开发人员, 在百度页面去 ...
- Spring MVC 4.2 CORS 跨域访问
跨站 HTTP 请求(Cross-site HTTP request)是指发起请求的资源所在域不同于该请求所指向资源所在的域的 HTTP 请求.比如说,域名A(http://domaina.examp ...
随机推荐
- c语言小技巧:C语言学习笔记之位运算求余
我们都知道,求一个数被另一个数整除的余数,可以用求余运算符”%“,但是,如果不 允许使用求余运算符,又该怎么办呢?下面介绍一种方法,是通过位运算来求余,但是注 意:该方法只对除数是2的N次方幂时才有效 ...
- numpy-排序
numpy 有多种排序方法. sort sort(self, axis=-1, kind='quicksort', order=None):排完序后改变原值 [只有这个方法改变原值] axis : i ...
- Git-版本控制 (三)
前面两篇我们成功安装了Git,并且成功创建了我们的版本库. 创建了版本库,怎么可以不往里面放内容呢,所以今天的任务就是学会将文件放入至我们的版本库中...... 首先,我们点开我们的"Git ...
- 真香系列之 Golang 升级
Golang 以前的依赖管理一直饱受诟病,社区的方案也层出不穷,比如 vendor, glide, godep 等.之前的依赖管理一直是依靠 GOPATH 或者将依赖代码下载到本地,这种方式都有劣势. ...
- python常见问题解决方案
平时工作中经常需要用到这些python小技巧,顺便做个记录 import requests import time def get_pr(domain): pr = 6 time.sleep(1) h ...
- 006-Zabbix agent on Zabbix server is unreachable for 5 minutes
环境描述: 环境介绍:CentOS6.5 zabbix3.2.6(zabbix客户端与服务端在一台主机) 1.在安装完zabbix之后,添加客户端,客户端配置(zabbix_ag ...
- mysql 的主从
MySQL的Replication(英文为复制)是一个多MySQL数据库做主从同步的方案,特点是异步复制,广泛用在各种对MySQL有更高性能.更高可靠性要求的场合.与之对应的是另一个同步技术是MySQ ...
- 探索super()的执行顺序和__mro__方法
class Base(object): def func(self): print('Base.func') class Foo(Base): def func(self): # 方式一:根据mro的 ...
- git 分支 版本回退
本地回退: git reset --hard HEAD~ 回退后推送到远程: git push --force .
- 从输入一个URL到页面渲染的流程简介
首先说明以下是我参考网上答案和自己的思考,给出自己的想法,如果有问题,欢迎大家吐槽从用户在浏览器中输入一个URL,到整个页面渲染,这个过程中究竟发生了什么呢?今天先简单写下整个过程,后面再一点点完善. ...