温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

ajax跨域

发布时间:2020-06-17 06:00:45 来源:网络 阅读:440 作者:塞上名猪 栏目:开发技术

        所有支持Javascript的浏览器都会使用同源策略这个安全策略,所以当前后端出现域名、协议、端口不同时,都需要解决跨域问题。以下提供三种ajax跨域解决方式:

1.jsonp

ajax请求时dataType:jsonp

会自动增加一个请求参数callback,响应时原本的json包含在callback中

缺点:响应时需要额外增加一层包装


2.response header

在springmvc中增加拦截器interceptor,preHeadle方法中增加response.setHeader("Access-Control-Allow-Origin", “*");允许所有域名跨域请求

缺点:对IE9之前的浏览器有不兼容现象


3.nginx

nginx设置反向代理将后台请求和前台进行统一

缺点:本机开发时需要配置nginx

原始请求:http://localhost:8080/index.html

被域名阻挡请求:http://localhost:8081/indextwo.html

将被拦截请求改写成:http://localhost:8080/api/indextwo.html

server {

      listen       8080; #监听端口

      server_name  localhost; #

     location / {

        root   html;#文件根目录

        index  index.html index.htm;#默认起始页

      }

    #解决方法

    location /api{

        rewrite ^.+api/?(.*)$    /$1    break;

        include uwsgi_params;

        proxy_pass    http://localhost:8081;

    }


ps:

当ajax要求dataType:json时,要求后台返回必须为标准的json格式,如果是字符串会进入error


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI