加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ajax 跨域问题

发布时间:2020-12-16 03:30:07 所属栏目:百科 来源:网络整理
导读:今天有人问我如何解决js跨域,总结了一下,以下是我整理的一些解决方法: 简单介绍一下什么是跨域: 跨站 HTTP 请求(Cross-site HTTP request)是指发起请求的资源所在域不同于该请求所指向资源所在的域的 HTTP 请求。 1、ajax跨域(js): $(document).ready(f

今天有人问我如何解决js跨域,总结了一下,以下是我整理的一些解决方法:

简单介绍一下什么是跨域:

跨站 HTTP 请求(Cross-site HTTP request)是指发起请求的资源所在域不同于该请求所指向资源所在的域的 HTTP 请求。



1、ajax跨域(js):

$(document).ready(function(){
   var url='http://localhost:8080/hello?name=ajax&callback=?';
   $.ajax({
     url:url,dataType:'jsonp',processData: false,type:'get',success:function(data){
       alert(data.name);
     },error:function(XMLHttpRequest,textStatus,errorThrown) {
       alert(XMLHttpRequest.status);
       alert(XMLHttpRequest.readyState);
       alert(textStatus);
     }});
   });

后台java:

@RequestMapping(value = "/hello")
  public String getGroupById(@RequestParam("name") String name,HttpServletRequest request,HttpServletResponse response)
      throws IOException {
      String callback = request.getParameter("callback");
      Map map = new hashMap();
      map.put("hello",name);
    String json = JSON.toJSONSring(map);
     response.setContentType("text/html");
     response.setCharacterEncoding("utf-8");
     PrintWriter out = response.getWriter();
     out.print(callback + "(" + json + ")");
     return null;
  }
2、jsonp方式:

var url='http://localhost:8080/hello?name=ajax&callback=?';
$.jsonp({
  "url": url,"success": function(data) {
   alert(data.hello);
  },"error": function(data,message) {
    //此处省略。。。。
  }
});

3、后台设置header(可以访问资源的路径):

httpServletResponse.setHeader("Access-Control-Allow-Origin","*");//*代表所有,可以写具体的地址,如果多个用逗号隔开

httpServletResponse.setHeader("Access-Control-Allow-Methods","POST");//请求的方式,多个用逗号隔开,如:POST,PUT....

httpServletResponse.setHeader("Access-Control-Allow-Headers","Access-Control");

httpServletResponse.setHeader("Allow","POST");

Access-Control-Allow-Origin:| * // 授权的源控制

Access-Control-Max-Age:// 授权的时间

Access-Control-Allow-Credentials: true | false // 控制是否开启与Ajax的Cookie提交方式

Access-Control-Allow-Methods:[,]* // 允许请求的HTTP Method

Access-Control-Allow-Headers:[,]* // 控制哪些header能发送真正的请求

参考文章:

跨域资源共享 CORS详解

java,spring,tomcat跨域设置

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读