zoukankan      html  css  js  c++  java
  • 使用jsonp和cros解决跨域问题

    跨域问题

    跨域问题会出现于前端访问不同系统的地址适合会产生的问题,目前有个项目的前端和后端分离成两个项目的,导致前端在访问后端的时候就会产生跨域问题。解决方法时使用get的jsonp返回数据即可。还有使用Falsh或者代理服务器中转等方法。其实POST方法还有个CORS可以实现ajax跨域post请求,只是它支持IE8+版本,低版本不支持,但我认为未来是属于它的。

    jsonp解决方案

    前端:
    $.ajax({
    url : url,
    type : "get",
    data : datas,
    callback: 'callback',
    dataType:'jsonp'}

    后端:
    public static String ObjectToJsonp(Object object,String callBack)
    {
    String jsonp = JSONObject.toJSONString(object, SerializerFeature.DisableCircularReferenceDetect);
    jsonp = callBack + "(" + jsonp + ")";
    return jsonp;
    }

    这样就可以完成get方式的跨域解决。

    cros解决方案

    前端(绝对地址):

    var xhr = new XMLHttpRequest();  
    xhr.open("GET", "http://blog.csdn.net/hfahe", true);  
    xhr.send();  
    

    后端:

    服务器端对于CORS的支持,主要就是通过设置Access-Control-Allow-Origin来进行的。如果浏览器检测到相应的设置,就可以允许Ajax进行跨域的访问。
    
    HTTP 头的设置方法有很多,http://enable-cors.org/这篇文章里对各种服务器和语言的设置都有详细的介绍,下面我们主要介绍Apache和PHP里的设置方法。
    
    Apache:Apache需要使用mod_headers模块来激活HTTP头的设置,它默认是激活的。你只需要在Apache配置文件的<Directory>, <Location>, <Files>或<VirtualHost>的配置里加入以下内容即可:
    
    Header set Access-Control-Allow-Origin *  
    

    缺陷:支持现代浏览器,对于老旧的浏览器版本不支持。

  • 既然不能成为屠龙的勇士,那么就好好成为一名优秀的管家,为公主建设一个温馨美好的家。
    Since it can not become a dragon warrior, then it is a good housekeeper, for the princess to build a warm and beautiful home.

查看全文
  • 相关阅读:
    Cheatsheet: 2018 11.01 ~ 2019 02.28
    Cheatsheet: 2018 08.01 ~ 2018 10.31
    Cheatsheet: 2018 05.01 ~ 07.31
    Cheatsheet: 2018 04.01 ~ 04.30
    stb_image multiple definition of first defined here 多文件包含问题
    NanoPi arm架构下的程序 ./ 运行黑屏 Qt环境可运行
    opencv3.4.9 + armv7 + arm-linux-gnueabihf交叉编译
    NIVIDIA Tegra K1 QWT安装使用问题和解决办法
    7.17日报
    7.16日报
  • 原文地址:https://www.cnblogs.com/ITflying/p/7305028.html
  • Copyright © 2011-2022 走看看