Nginx的跨域问题解决

Nginx的跨域问题解决

假设有两台服务器:分别是192.168.101.23(nginx1), 192.168.101.18(nginx2)

在nginx2上有一个get_user资源。

#nginx2

powershell 复制代码
```powershell
 location /get_user {
    default_type application/json;
    return 200 '{"id":1,"name":"jack","age":18}';
}
复制代码
nginx2访问自己的资源测试,可以正确访问
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/0a111fe642ed4512a00e246e0e5612c2.png)
这时使用nginx1的服务访问nginx2的get_user

nginx1编写如下页面
#nginx1下的html文件夹->cross.html文件
页面点击"获取数据"按钮提示以下错误:

```powershell

<html>
  <head>
        <meta charset="utf-8">
        <title>跨域问题演示</title>
        <script src="jquery.js"></script>
        <script>
            $(function(){
                $("#btn").click(function(){
                        $.get('http://192.168.101.18:8080/get_user',function(data){
                                alert(JSON.stringify(data));
                        });
                });
            });
        </script>
  </head>
  <body>
        <input type="button" value="获取数据" id="btn"/>
  </body>
</html>

通过F12可以看到提示:CORS Missing Allow Origin

如何解决上面的跨域问题?

add_header指令

指令 add_header
默认值 无
位置 http, server, location
用途 向HTTP响应头添加新的头部或修改现有头部

此处用来解决跨域问题,需要添加两个头信息,一个是Access-Control-Allow-Origin ,Access-Control-Allow-Methods
Access-Control-Allow-Origin : 表示允许跨域访问的源地址信息,可以配置多个(多个用逗号分隔),也可以使用*代表所有源
Access-Control-Allow-Methods :表示允许跨域访问的请求方式,值可以为 GET POST PUT DELETE...,可以全部设置,也可以根据需要设置,多个用逗号分隔

在nginx2中的nginx.conf添加以下配置

powershell 复制代码
 location /get_user {
                add_header Access-Control-Allow-Origin http://192.168.101.23;#nginx1服务的地址
                add_header Access-Control-Allow-Methods GET,POST,PUT,DELETE;
                default_type application/json;
                return 200 '{"id":1,"name":"jack","age":18}';
        }

./nginx -t 测试配置文件是否在正确

./nginx -s reload 重新加载文件

访问测试:

相关推荐
OnlyEasyCode1 小时前
IIS开放端口转发后端
运维·服务器
合合技术团队1 小时前
合合信息旗下TextIn面向全球市场推出文档处理自动化公有云服务
运维·自动化
分布式存储与RustFS2 小时前
机器要下线,数据先线上搬家:RustFS 存储池退役实操
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
9624562 小时前
一次 Dell PowerEdge R750xs 启动故障复盘:从 iDRAC 带外管理到 Linux 多内核回退与 initramfs 重建
linux·运维·服务器
Flynn Liang3 小时前
MQTT 共享订阅$share/原理:怎么用它给消费端水平扩容做负载均衡
运维·物联网·mqtt·iot·mqtt broker
海宇AI3 小时前
零信任架构实战:基于海宇行驶OCR证识别构建自动化租车车队行驶证电子档案网关
运维·人工智能·架构·自动化·1024程序员节
北京中科新远科技4 小时前
高速接口兼容排查实战:OSFP、QSFP112与QSFP56如何逐层验证
linux·运维·网络
Ruiery4 小时前
Linux 6.6内核 CPU 深度解析(零):x86 内核引导协议 — 从 bootloader 到 main()
linux·运维·服务器
Ruiery4 小时前
Linux 6.6内核 CPU 深度解析(十六):x86 保护机制 — 从 ring 到页表的权限防线
linux·运维·服务器
不老刘4 小时前
异构双 Agent 协同:构建无人值守的长任务自动化研发流水线
运维·人工智能·自动化·ai编程·1024程序员节