JS的跨域处理

Js不可以跨域请求数据。

什么是跨域:

1、域名不同

2、域名相同端口不同。

解决js的跨域问题可以使用Jsonp,使用js的特性绕过跨域请求。Js可以跨域加载js文件。

原理图:


实现方法:

ajax中要注意的地方(一定要加  dataType ):

$.ajax({

    url : "http://localhost:8088/user/token/" + _ticket,

    dataType : "jsonp",
    type : "GET",
    success : function(data){
        //回调函数
    }

});


Spring中要注意的地方:

@RequestMapping(value="/user/token/{token}", produces=MediaType.APPLICATION_JSON_UTF8_VALUE)

@ResponseBody

    public String getUserByToken(@PathVariable String token, String callback) {

    //请求参数中要含 callback 方法名

     //把结果封装成一个js语句响应
     return callback + "(" + result + ");";

}

produce处还有一种写法  : produces="application/json;charset=utf-8"

如果项目中使用的 Spring 是4.1以后的版本,可以使用以下返回方式:

MappingJacksonValue mappingJacksonValue = new MappingJacksonValue(result);

mappingJacksonValue.setJsonpFunction(callback);

handler的返回类型可以改成object类型


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
@escook 的跨域处理指的是在Web开发中,处理因为安全策略导致的浏览器跨域限制的方法和技术。浏览器的同源策略要求网页只能访问与其来源相同的资源,即协议、域名和端口必须完全一致。这种限制导致了在不同域名之间进行数据交互时的问题。 @escook 提供了以下几种常用的跨域处理方法: 1. 代理服务器:可以通过在自己的服务器端设置代理,实现浏览器与不同域名之间的数据交互,代理服务器将浏览器的请求发送给目标服务器,并将相应的结果返回给浏览器。 2. JSONP:JSONP是一种利用script标签的src属性没有跨域限制的特性来进行跨域请求的技术。通过在目标服务器上预先定义一个回调函数,然后将该函数的名称作为参数传递给目标服务器,目标服务器在返回的数据中将调用该回调函数,并将数据作为参数传递给该函数。 3. CORS:跨域资源共享(CORS)是一种由W3C标准化的跨域请求处理方法。在服务器端设置合适的响应头,允许浏览器进行跨域请求。通过在服务器端返回Access-Control-Allow-Origin和其他相关的响应头,浏览器可以判断该服务器是否允许跨域请求,并进行相应的处理。 此外,@escook 还提到可以使用一些前端框架和库,如Vue.js、React.js等,它们内部集成了一些跨域处理的方法,以简化开发者的操作。这些框架和库通常会提供一些配置选项,开发者可以根据需要进行配置来处理跨域问题。 总的来说,@escook 提供了代理服务器、JSONP和CORS等几种常用的跨域处理方法,开发者可以根据实际情况选择合适的方法来解决跨域问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值