1 什么是跨域请求

跨域请求就是指:当前发起请求的域与该请求指向的资源所在的域不一样。这里的域指的是这样的一个概念:我们认为若协议 + 域名 + 端口号均相同,那么就是同域。

举个例子:假如一个域名为aaa.cn的网站,它发起一个资源路径为aaa.cn/books/getBookInfo的 Ajax 请求,那么这个请求是同域的,因为资源路径的协议、域名以及端口号与当前域一致(例子中协议名默认为http,端口号默认为80)。但是,如果发起一个资源路径为bbb.com/pay/purchase的 Ajax 请求,那么这个请求就是跨域请求,因为域不一致,与此同时由于安全问题,这种请求会受到同源策略限制。

2.常见跨域情况

  • 网络协议不同,如http协议访问https协议 ;
  • 端口不同,如80端口访问8080端口 ;
  • 域名不同,如www.test1.com访问www.test2.com ;
  • 子域名不同,如abc.test1.com访问def.test1.com ;

3 nginx跨域示例演示

准备一个nginx服务器,配置为

server {
      listen 80; # 监听的端⼝
       server_name www.zwx.com; # 域名或ip
      location / { # 访问路径配置   
      root /usr/share/nginx/html;# 根⽬录
      index index.html index.htm; # 默认⾸⻚
      }
      error_page 500 502 503 504 /50x.html; # 错误⻚⾯
      location = /50x.html {
      root html;
      }
}

在html目录里有一个wel.html文件

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>nginx-cors-test</title>
</head>
<body>
<div>nginx跨域请求测试</div></body></html>

然后启动一个springboot应用,或者tomcat也可以,访问一个html页面

wel1.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>nginx-cors-test</title>
</head>
<body>
<button type="button" onclick="test()">nginx跨域请求测试</button>
<div id="test"></div>
</body>
<script src="jquery-1.10.2.min.js"></script>
<script>function test() {$.get("http://192.168.75.128/wel.html",null,function(result) {alert("跨域请求成功");});}</script>
</html>

然后访问localhost:9000/wel1.html

点击测试按钮

出现了跨域访问错误

4 修改nginx server 配置

添加如下内容

server {listen 80; # 监听的端⼝server_name localhost; # 域名或iplocation / { # 访问路径配置#允许跨域请求的域,* 代表所有add_header 'Access-Control-Allow-Origin' *;#允许带上cookie请求add_header 'Access-Control-Allow-Credentials' 'true';#允许请求的方法,比如 GET/POST/PUT/DELETEadd_header 'Access-Control-Allow-Methods' *;#允许请求的headeradd_header 'Access-Control-Allow-Headers' *;root /usr/share/nginx/html;# 根⽬录index index.html index.htm; # 默认⾸⻚}error_page 500 502 503 504 /50x.html; # 错误⻚⾯location = /50x.html {root html;}
}

然后重启nginx再次测试

跨域求成功了

最重要的就是要在被跨域的nginx配置添加如下配置

#允许跨域请求的域,* 代表所有
      add_header 'Access-Control-Allow-Origin' *;
      #允许带上cookie请求
      add_header 'Access-Control-Allow-Credentials' 'true';
      #允许请求的方法,比如 GET/POST/PUT/DELETE
      add_header 'Access-Control-Allow-Methods' *;
      #允许请求的header
      add_header 'Access-Control-Allow-Headers' *;

Nginx配置跨域(CORS)相关推荐

  1. Nginx配置跨域请求 Access-Control-Allow-Origin *

    Nginx配置跨域请求 Access-Control-Allow-Origin * 当出现403跨域错误的时候 No 'Access-Control-Allow-Origin' header is p ...

  2. nginx配置跨域、gzip加速、代理详细讲解

    1.配置跨域 这个很简单,直接打开配置nginx.conf ,在http下配置下面三行代码:当然如果你是想某一个虚拟主机下跨域,那就在哪个server下面添加 add_header Access-Co ...

  3. cors nginx 怎么解决_NGINX配置跨域CORS支持的正确方式

    这两天在搞 酷瓜云网课 的 app,采用 uni-app 做全端支持,现学现卖,目前算是入门了. 在做 H5 的时候难免会跨域请求后端 API,虽然用 HBuilder 内置的浏览器不会有跨域问题(这 ...

  4. Nginx配置跨域访问

    由于浏览器同源策略的存在使得一个源中加载来自其它源中资源的行为受到了限制.即会出现跨域请求禁止. 通俗一点说就是如果存在协议.域名.端口或者子域名不同服务端,或一者为IP地址,一者为域名地址(在跨域问 ...

  5. nginx配置跨域访问后不生效,仍然显示跨域问题

    解决方案 首先,我们先确定跨域源目标没写错,可以先将Allow-Origin改成*测试 server {listen 80;server_name https://www.test.com;locat ...

  6. Nginx配置跨域兼容IOS12 苹果手机请求程序报network error错误

    原文更新链接 https://www.aiprose.com/blog/146 最近有用户反馈在使用微信H5页面的时候,一直提示network error错误,但是本身网络都是正常的,因为网页能正常打 ...

  7. nginx配置跨域,代理同源

    前端把api的baseurl写成和前端部署域名相同 再nginx将/api转发到真实服务器地址 location /api {proxy_set_header Origin "http:// ...

  8. SpringBoot配置跨域 修改默认json序列化

    SpringBoot配置跨域 修改默认json序列化 修改跨域 addCorsMappings(CorsRegistry registry)方法添加跨域设置的,无法生效,原因是请求经过的先后顺序问题, ...

  9. Nginx | Nginx之跨域配置(CORS)

    Nginx之跨域配置 1. 注意 2. CORS 3. Nginx通过CROS 实现跨域 4. 配置信息 nginx.conf 中 1. 注意 服务端口不能与代理端口一致 端口会冲突 服务本身做了跨域 ...

  10. 无需CORS,用nginx解决跨域问题,轻松实现低代码开发的前后端分离

    近年来,前后端分离已经成为中大型软件项目开发的最佳实践. 在技术层面,前后端分离指在同一个Web系统中,前端服务器和后端服务器采用不同的技术栈,利用标准的WebAPI完成协同工作.这种前后端分离的&q ...

最新文章

  1. Node.js 究竟是什么?
  2. Cardinality 对执行计划的重要性
  3. 微信JSSDK javascript 开发 代码片段,仅供参考
  4. SpringMVC Hello World 实例
  5. 关键词提取算法—TF/IDF算法
  6. 有n个人围成一圈,按顺序从1到n编号。从第一个人开始报数
  7. mongodb 导出一条数据导出_使用MongoDB命令工具导出、导入数据
  8. 一篇文章普及各种ios基本知识(防止奸商忽悠、鉴别假冒翻新机、知识入门必备)
  9. percona-toolkit工具包安装
  10. 基于'sessionStorage'与'userData'的类session存储
  11. 读jQuery之二十(Deferred对象)
  12. 滤镜应用——拼图效果
  13. 仿小米商城html网页源码
  14. RADIUS协议解析
  15. Webhacking.kr writeup(更新至challenge 29)
  16. linux u盘保护,u盘被写保护
  17. 推荐系统(十九)Gate网络(二):百度GemNN(Gating-Enhanced Multi-Task Neural Networks)
  18. 2021届校招求职流程全解析(IT企业和国企)
  19. TL-BERT: A Novel Biomedical Relation Extraction Approach
  20. 想和大家讲述一个普通人的生活:现在差劲不可怕,只要最后是好的就行

热门文章

  1. “长江第一灯光秀”引关注 景观工程首次应用4G 路由
  2. textcnn模型实践
  3. html5酷狗音乐网页代码,酷狗音乐
  4. ureport2报表详细使用(六)-图表展示
  5. slam和orbslam3环境配置
  6. 数值计算之 插值法(2)多项式插值——牛顿插值法
  7. python基础-读写txt文件
  8. 配电室智能监控系统设计及实现分析
  9. 看你想看的,不受打扰地工作(浏览器屏蔽百度热搜)
  10. 系统自动化制作工资条,很简单,还能发送短信息