咋也弄不懂的跨域问题
我公司的移动端全部是专业安卓和IOS来完成的 ,
有一天我们讨论起跨域问题了 , 奇怪的是他们居然不知道什么是跨域
上网查了很多资料才知道原来他们是没有跨域问题的 ,
你直接写一段请求接口的代码跑一下哪有什么403错误呀
我讲不清为什么 , 但是只要记住我们开发的时候不要被跨域吓到 , 虽然它很缥缈 , 但是也好解决
- jsonp -------------- 很无聊的方法 , 个人不推荐 , 还要后端支持
- 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; # } #} }