zoukankan      html  css  js  c++  java
  • nginx跨域

    五. 后端配置nginx解决跨域(服务端解决跨域)

    1. 依旧是ajax+node

    这是前端代码

    $(document).ready(function () {
                $('#get').click(function () {
                    $.ajax({
                        url:'http://localhost:3002/ok',
                        //  带cookies的请求
                        xhrFields:{
                            withCredentials:true
                        },
                        success:function(res) {
                            console.log("success",res)
                        },
                        error:function(err) {
                            console.log('fail',err)
                        }
                    })
                })
            })

    后端代码同前面
    还有nginx配置如下:

    server
    {
        listen 3002;
        server_name localhost;
        location /ok {
            proxy_pass http://localhost:3000;
    
            #   指定允许跨域的方法,*代表所有
            add_header Access-Control-Allow-Methods *;
    
            #   预检命令的缓存,如果不缓存每次会发送两次请求
            add_header Access-Control-Max-Age 3600;
            #   带cookie请求需要加上这个字段,并设置为true
            add_header Access-Control-Allow-Credentials true;
    
            #   表示允许这个域跨域调用(客户端发送请求的域名和端口) 
            #   $http_origin动态获取请求客户端请求的域   不用*的原因是带cookie的请求不支持*号
            add_header Access-Control-Allow-Origin $http_origin;
    
            #   表示请求头的字段 动态获取
            add_header Access-Control-Allow-Headers  $http_access_control_request_headers;
    
            #   OPTIONS预检命令,预检命令通过时才发送请求
            #   检查请求的类型是不是预检命令
            if ($request_method = OPTIONS){
                return 200;
            }
        }
    }
     

    发送预检命令的是非简单请求,具体可以看慕课网ajax跨域完全讲解
    实际上不是非简单请求的且不带cookie只需2个字段即可解决跨域

    add_header Access-Control-Allow-Methods *;
    add_header Access-Control-Allow-Origin $http_origin;
    • 具体效果如下图:

    这时只需改ajax请求的端口接口,无需修改前端服务器的地址

  • 相关阅读:
    DELPHI中应用GoogleMap[转]
    给DBGrid添加鼠标滚动事件
    枚举和卸载消息钩子[转]
    区域性名称和标识符
    VCL 中的 Windows API 函数: AlphaBlend
    高效读书,实用阅读指南
    defaultservlethandler不生效原因,springmvc静态资源拦截方案比较
    indexOf原理,Java,javascript,python实现
    可见性是什么?(通俗易懂)
    我们一起学程序五子棋
  • 原文地址:https://www.cnblogs.com/gaoyuechen/p/13298197.html
Copyright © 2011-2022 走看看