苹果手机Ajax请求Nginx静态资源返回状态0的解决方案

现象:

今天用苹果手机测试ajax请求一个nginx服务器上的一个json文件,发现返回的错误状态值是0,PC端和安卓端都可以正常访问,而且把json放到别的tomcat中

开始查找原因:

1.先测试PC和安卓端,发现正常,初步判断是苹果手机的问题
2.把json文件放到别的tomcat当中,发现苹果、安卓、PC都正常,这时候开始怀疑是nginx配置问题,但是第一步的测试的结果PC和安卓都没问题,说明nginx配置应该也没问题,那问题出在哪里呢?
3.查了一些资料,也没查到有用的信息,最后误打误撞给nginx配置了一下跨域,竟然发现OK了,好吧,具体为啥,也不清楚,以后待查,先记录一下

下面看html代码,很简单,就一个ajax请求

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.js"></script>
    <script>
        $(function () {
            $.get("http://51baxue.com/config/hcanvas-config.json", function (data, status) {
                console.log("状态: " + status);
                console.log(data);
            });
        })
    </script>
</head>
<body>

</body>
</html>

再看一下具体的nginx的配置

location / {  
	    # 解决跨越问题,苹果手机里面用ajax访问nginx静态资源要加上这段代码,不然会返回状态0
	    add_header Access-Control-Allow-Origin *;
            add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
            add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';

            if ($request_method = 'OPTIONS') {
                return 204;
            }
        }  

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×