咋也弄不懂的跨域问题

我公司的移动端全部是专业安卓和IOS来完成的 , 

有一天我们讨论起跨域问题了 , 奇怪的是他们居然不知道什么是跨域

上网查了很多资料才知道原来他们是没有跨域问题的 , 

你直接写一段请求接口的代码跑一下哪有什么403错误呀

我讲不清为什么 , 但是只要记住我们开发的时候不要被跨域吓到 , 虽然它很缥缈 , 但是也好解决

  1. jsonp  -------------- 很无聊的方法 , 个人不推荐 , 还要后端支持
  2. nginx  -------------- 这个东西真心的火 , 真心得好用 ,

Nginx——Ngine X,是一款自由的、开源的、高性能HTTP服务器和反向代理服务器;也是一个IMAP、POP3、SMTP代理服务器;也就是说Nginx本身就可以托管网站(类似于Tomcat一样),进行Http服务处理,也可以作为反向代理服务器使用。

Nginx 解决了服务器的C10K(就是在一秒之内连接客户端的数目为10k即1万)问题。它的设计不像传统的服务器那样使用线程处理请求,而是一个更加高级的机制—事件驱动机制,是一种异步事件驱动结构。

虽然目前Nginx的份额在市场上只占很少部分,但是其高性能和低消耗内存的结构,使得其越来越普遍,典型的一个应用就是我们可以使用Nginx作为反向代理进行网站的负载均衡器。例如:Wordpress、GitHub等知名的网站都使用到了Nginx。

       我了解的也不是很多 ,我是个前端并不太能理解这个东西 , 但是这个反向代理真的很好用

       3. node.js 也提供了个东西  , 比如我们常用ng 或者vue 或者 react ,例如vue在config文件夹下index.js 的dev对象上等的

proxyTable: {
      "/api": {
        "target": "http://112.74.190.114",
        "changeOrigin": true,
      }
    },

 

proxyTable其实就是启动的代理

在build 文件夹下的dev-server 

// default port where dev server listens for incoming traffic
var port = process.env.PORT || config.dev.port
// automatically open browser, if not set will be false
var autoOpenBrowser = !!config.dev.autoOpenBrowser
// Define HTTP proxies to your custom API backend
// https://github.com/chimurai/http-proxy-middleware
var proxyTable = config.dev.proxyTable

var app = express()
var compiler = webpack(webpackConfig)

开发过程中 , 你的你可以调用任何能ping通的服务器上的接口 , 不过生产环境就得用nginx了 , 

 


这个https://www.jianshu.com/p/bed000e1830b 这篇文章写的非常详细 , 关于nginx的 

#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;
    client_max_body_size  200m;
    #gzip  on;
server {

           listen       80;

           server_name  localhost;        #虚拟一个服务器,可域名,ip地址

           charset utf8;

           root D:\sen; #根目录

        error_page 404 /index.html;

        index index.html;

        location / {

                        try_files $uri $uri/ /index.html;
                        proxy_connect_timeout 1;
                        proxy_send_timeout 30;
                        proxy_read_timeout 60;

                }



                location /api {

                        #rewrite /api/(.*) /$1 break;

                        proxy_pass http://123.134.33.54:9680 

;



                }

         location /charger-SCH-Web {

           #rewrite  ^.+charger-SCH-Web/?(.*)$ /$1 break;

           #include  uwsgi_params;

            proxy_pass   http://localhost:7030;

         }

         location /charger-ACC-Web {
            rewrite /charger-ACC-Web/(.*) /$1 break;
            #rewrite  ^.+charger-ACC-Web/?(.*)$ /$1 break;

            #include  uwsgi_params;

            proxy_pass   http://localhost:7050;

         }

         location /charger-LAB-Web {
        rewrite /charger-LAB-Web/(.*) /$1 break;
       
            #include  uwsgi_params;

            proxy_pass   http://localhost:7110;

         }

             location /charger-SPC-Web {
            rewrite /charger-SPC-Web/(.*) /$1 break;
            #rewrite  ^.+charger-SPC-Web/?(.*)$ /$1 break;

            #include  uwsgi_params;

            proxy_pass   http://localhost:7090;

         }

             location /charger-APS-Web {
            rewrite /charger-APS-Web/(.*) /$1 break;
            #rewrite  ^.+charger-APS-Web/?(.*)$ /$1 break;

            #include  uwsgi_params;

            proxy_pass   http://localhost:7070;

         }

    location /flow {

        #rewrite ^.+flow/?(.*)$ /$1 break;

        #include uwsgi_params;

        proxy_pass  http://localhost:7210;

    }

    location /charger-HR-Web {

            #rewrite ^.+charger-HR-Web/?(.*)$ /$1 break;

            #include uwsgi_params;

            proxy_pass  http://localhost:7120;

        }







    location ~.*\.(js|css|html|png|jpg)$

        {

        if (!-f $request_filename) {

                proxy_pass http://localhost:7210;

                break;

            }

            expires -1;

        }

        location /nginxstatus {

                access_log on;

                auth_basic "nginxstatus";

                auth_basic_user_file htpasswd;

        }



        location = /50x.html {

            root   html;

        }



    }



    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}


    # HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;

    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

}

 

posted @ 2017-12-29 15:23  JGG靖哥哥  阅读(132)  评论(0)    收藏  举报