欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

如何快速解决JS或Jquery ajax异步跨域的问题

程序员文章站 2022-05-08 18:44:48
简单的概括下,解决办法有两种。 一种是jsonp方式:即在前端发送异步请求时,添加相关的jsonp设置或配置;后端则返回可供jsonp解析的格式的串。 &nbs...

简单的概括下,解决办法有两种。

一种是jsonp方式:即在前端发送异步请求时,添加相关的jsonp设置或配置;后端则返回可供jsonp解析的格式的串。                                             

但是jsonp方式只支持get的请求方式,并且不被新浏览器版本的支持(新浏览器版本多进行opition请求--异步安全检查的测试的请求,所以jsonp方式无法通过),

这里就不多了解了。

一种是cros方式,优点就是更安全,能指定连接白名单,能限定请求方法(也就是支持多种请求方法),主流浏览器都支持。主要说一下实现方式,

前端:和普通异步请求一样的格式,如:

$.ajax({ 
   url :'http://localhost:8080/myproject/test' 
    type : "get",//不局限于get 
   data:{"key1":value1,"key2":value2}, 
   async : true, 
   success : function(data) { 
    var dataobj=eval("("+data+")"); 
     console.log(dataobj); 
     
   }, 
   error : function(data) { 
    alert( "服务器连接失败 ajaxjsonp" ); 
   } 
  }); 

后端:主要是设置响应头参数

response.setheader("access-control-allow-origin", "*");//设置可跨域资源共享的域名,只能设置一个具体的域名,但*可以代表所有 
response.setheader("access-control-allow-methods","get,post,put,options");//设置可跨域资源共享的请求方式 
  response.setheader("access-control-allow-credentials","true"); 
  response.setheader("access-control-allow-headers" ,"origin, x-requested-with, content-type, accept");