ajax请求跨域问题? 400 报错-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

ajax请求跨域问题? 400 报错

2020-05-30 21:50:22 404 1

ajax请求跨域问题? 400 报错

前段用的kayak,在请求后端时报了个错:

Failed to load http://man.picer.dmall.com/cancelOrder/query: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://local.dmall.com:3000' is therefore not allowed access.

网上查了说的是跨域问题,然后按照他们说的配置试了:

比如: dataType: 'JSON'替换为dataType: 'JSONP'

又比如

.filter或者servlet里面添加response.setHeader("Access-Control-Allow-Origin", "*");

但是都不行,

js请求代码

param.contentType="application/json;charset=utf-8";
            handleDao.getDataFun({
                url: 'getCancelOrder',
                dataType:"JSONP",
                param: param,
                callback: function (data) {
                    //刷新数据
                    console.log(data)
                    if(!data || data.code){
                        _fn.minipop("失败,未获取到数据", "确定");
                        return;
                    } else if(data.code != "0000"){
                        _fn.minipop(data.msg, "确定");
                        return;
                    }
                    _fn.renderDom('table',data.data|| []);
                }
            })();

麻烦各位帮忙看看

取消 提交回答
全部回答(1)
  • 爱吃鱼的程序员
    2020-05-31 13:06:55

    遇到这种问题,我的回答总是一样的:

    别瞎 JB 折腾了,在后台自己封装一次,然后在同一个域名之下调用吧!

    ######少了一个callback参数,并且服务返回的内容必须是callback包的######

    看下我的这个例子,我当初模仿京东和淘宝做单点登录,跨域问题处理

    <script>
        var success_count = 0;
        var error_count = 0;
        $.ajax({
            type: "get",
            dataType: "jsonp",
            url: "http://sso:8080/getAllDomain?callback=?",
            crossDomain: true,
            success: function (domains) {
                if (domains) {
                    $.each(domains, function () {
                        $.ajax({
                            type: "get",
                            dataType: "jsonp",
                            url: this,
                            crossDomain: true,
                            success: function (data) {
                                success_count++;
                                console.log("success");
                            },
                            error: function () {
                                error_count++;
                            }
                        });
                    })
                }
            }
        });
    </script>

    这是后端

    
        @RequestMapping("getExitAllDomain")
        public void getExitAllDomain(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) {
            List<String> allDomain = new ArrayList<String>();
            allDomain.add("http://sso:8080/delCookie?t=a:8080&callback=?");
            allDomain.add("http://sso:8080/delCookie?t=b:8080&callback=?");
            allDomain.add("http://sso:8080/delCookie?t=c:8080&callback=?");
            allDomain.add("http://sso:8080/delCookie?t=d:8080&callback=?");
            PrintWriter out = null;
            try {
                out = httpServletResponse.getWriter();
            } catch (IOException e) {
                e.printStackTrace();
            }
            String callback = httpServletRequest.getParameter("callback");
            out.println(callback + String.format("(%s);", JSON.toJSONString(allDomain)));
        }
    

     

    ######如果用jsonp看下服务器返回的是不是回调函数类型,跨域建议使用cors######

    别人说设置jsonp是说在jquery的 ajax方法的时候,你封装的那个不知道...

    ######

    在jQuery的ajax方法下用jsonp,你那个封装方法虽然看起来差不多但是具体里面对跨域的处理不知道写了什么,只能自己另外做处理

    ######

    先研究一下jsonp的实现方法再用

    ######

    可以看我的这篇,https://my.oschina.net/tp123/blog/1506646  希望对你有帮助

    ######

    解决了

    ######
    String origin = request.getHeader("Origin");
    if(StringUtils.isNotBlank(origin)){
       response.setHeader("Access-Control-Allow-Origin", origin); // 允许访问的域
       response.setHeader("Access-Control-Allow-Methods", "POST,GET");// 允许GET、POST的外域请求
       response.setHeader("Access-Control-Allow-Credentials", "true"); // 允许请求带cookie到服务器
       response.setContentType("application/json; charset=utf-8"); // 设定JSON格式标准输出、及编码
    }
    0 0
相关问答

4

回答

Spark 【问答合集】

社区小助手 2019-05-29 14:13:40 127137浏览量 回答数 4

145

回答

【新手入门】云服务器linux使用手册

fanyue88888 2012-11-26 17:14:18 157699浏览量 回答数 145

28

回答

钉钉开放平台“常见问题常见问题常见问题“重要请关注

竹梅 2015-12-03 00:39:14 93782浏览量 回答数 28

3

回答

Logstash采集文件名称以及自定义格式的日志文件采集

Snorlax 2019-06-18 11:51:28 114902浏览量 回答数 3

22

回答

爬虫数据管理【问答合集】

我是管理员 2018-08-10 16:37:41 147240浏览量 回答数 22

31

回答

[@倚贤][¥20]刚学完html/css/js的新手学习servlet、jsp需要注意哪些问题?

弗洛伊德6 2018-10-27 21:52:43 146041浏览量 回答数 31

1

回答

出现这个问题求解决This XML file does not appear to have any

淘合肥 2017-04-08 21:07:00 93168浏览量 回答数 1

42

回答

【精品问答集锦】Python热门问题

小六码奴 2019-05-30 15:27:34 136988浏览量 回答数 42

249

回答

阿里云LNAMP(Linux + Nginx + Apache + MySQL + PHP)环境一键安装脚本

云代维 2014-02-14 15:26:06 305632浏览量 回答数 249

24

回答

【精品问答】python技术1000问(1)

问问小秘 2019-11-15 13:25:00 475660浏览量 回答数 24
+关注
爱吃鱼的程序员
https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB
2
文章
21569
问答
问答排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载