• 关于跨区的3种解决办法


    1.jsop解决跨域

    jsonp就是利用<script>标签没有跨域限制的“漏洞”(历史遗迹啊)来达到与第三方通讯的目的。当需要通讯时,本站脚本创建一个<script>元素,地址指向第三方的API网址;

    1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
    2. <html>  
    3. <head>  
    4. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
    5. <title>Insert title here</title>  
    6. <script type="text/javascript" src="resource/js/jquery-1.7.2.js"></script>  
    7. </head>  
    8. <script type="text/javascript">  
    9. $(function(){     
    10.     /*  
    11.     //简写形式,效果相同  
    12.     $.getJSON("http://app.example.com/base/json.do?sid=1494&busiId=101&jsonpCallback=?",  
    13.             function(data){  
    14.                 $("#showcontent").text("Result:"+data.result)  
    15.     });  
    16.     */  
    17.     $.ajax({  
    18.         type : "get",  
    19.         async:false,  
    20.         url : "http://app.example.com/base/json.do?sid=1494&busiId=101",  
    21.         dataType : "jsonp",//数据类型为jsonp  
    22.         jsonp: "jsonpCallback",//服务端用于接收callback调用的function名的参数  
    23.         success : function(data){  
    24.             $("#showcontent").text("Result:"+data.result)  
    25.         },  
    26.         error:function(){  
    27.             alert('fail');  
    28.         }  
    29.     });   
    30. });  
    31. </script>  
    32. <body>  
    33. <div id="showcontent">Result:</div>  
    34. </body>  
    35. </html>  

    通过url拼接回调,只能发送get请求,在进行账户 密码等重要发送时会显示明文。

    2.后台设置所有域名都可以访问 

           现在很多通过session包保存账户密码  然后返回给前端的是的一个带set-cookie的字符串,这个字符串会自动保存到本地浏览器的cookie中,在下次发送请求的时候,会带上这个cookie,假如你后台返回的set-cookie中的那段字符串无法保存到本地的cookie,那么下次请求就不会带上那段字符串(相当于一个通行证),那么再次去请求数据就会报错。

           在W3C标准中是无法操作直接操作 跨区响应回来的set-cookie

      缺点;在后台进行seesion 保存时 ,在进行登录校验后返回的无法自动保存cookie,在其他页面发送数据的时候就会获取不到cookie,从而不能发送到后台,这种情况下就会请求不到数据

    3.运用反向代理

    这个应该是最常用  最理想的解决跨域的方式,我这边是直接在自己电脑下配置的nginx,监听本地的URL,这里有个坑就是,关于前端webstock的报错,这里注意下就好了;

    配置如下:

    worker_processes 1;

    events {
    worker_connections 1024;
    multi_accept on;
    }


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

    sendfile on;

    keepalive_timeout 65;
    server {
    listen 80;
    server_name 192.168.0.64;    自己的url
    location / {

    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_set_header X-NginX-Proxy true;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_connect_timeout 3;
    proxy_send_timeout 30;
    proxy_read_timeout 60;
    proxy_pass http://192.168.0.64:8080;   自己的url

    }
    location /znmk-mobile-service {
    proxy_pass http://192.168.0.203:8080;     数据url
    client_max_body_size 100m;
    client_body_buffer_size 2048k;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_set_header X-NginX-Proxy true;
    proxy_set_header Connection "";
    proxy_http_version 1.1;
    proxy_connect_timeout 3;
    proxy_send_timeout 30;
    proxy_read_timeout 60;
    }
    }
    }

     

  • 相关阅读:
    NO.05--谈一谈Angular 和 Vue.js 的对比。
    NO.04--我的使用心得之使用vue绑定class名
    No.03---Vue学习之路之模块化组织
    NO.02---聊聊Vue提升
    NO.01---今天聊聊Vuex的简单入门
    hello word!------为什么开通博客以及自我介绍
    JavaScript 常用正则示例
    Newtonsoft.Json(Json.Net)学习笔记
    aspx后台传递Json到前台的两种接收方法
    MVC5中后台提供Json,前台处理Json,绑定给Dropdownlist的例子
  • 原文地址:https://www.cnblogs.com/zhuwu/p/7776976.html
Copyright © 2020-2023  润新知