Nginx的跨域问题解决

Nginx的跨域问题解决

假设有两台服务器:分别是192.168.101.23(nginx1), 192.168.101.18(nginx2)
在nginx2上有一个get_user资源。
#nginx2


```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添加以下配置

 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 重新加载文件

访问测试:
在这里插入图片描述

回答: 在docker中配置nginx解决跨域问题的方法如下:首先,在docker中安装nginx时,默认的html路径是/usr/share/nginx。\[2\]在创建nginx容器之前,可以更改这个路径,但一旦创建并构成映射关系后,就不能再更改了,否则会导致404、403等错误。接下来,我们需要将创建的nginx必需文件与docker安装nginx的配置文件一一对应起来,这样可以方便地在外挂文件中修改nginx的配置。\[3\]通过这种映射关系,docker中的nginx配置文件会自动更新。这样,我们就可以在外挂文件中修改nginx的配置,解决跨域问题。 #### 引用[.reference_title] - *1* [nginx跨域配置、使用,docker部署nginx全流程(实测简单完整无坑)](https://blog.csdn.net/soulwirter/article/details/126985552)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [docker配置nginx外挂文件,使用nginx部署vue并 解决前后端跨域问题](https://blog.csdn.net/qq_37591637/article/details/112836688)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值