javascript - ajax如何跨域?
PHPz
PHPz 2017-04-11 11:45:50
[JavaScript讨论组]

1、创建一个空的html文件test.html,引入jquery

2、调用ajax

$.ajax({
    url: 'http://XXXXXXXXXXXXXX',
    type: 'post',
    success: function() {
        console.log('成功');
    },
    error: function() {
        console.log('失败');
    }
});

3、url中给出的是项目的接口地址,直接访问是可以得到数据的

4、为何直接在浏览器打开test.html就会打印失败,并提示

XMLHttpRequest cannot load *******(接口地址). No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'file://' is therefore not allowed access.

5、这是跨域导致的错误吗?该如何解决?

补充:1、后端返回的数据格式是json
2、同事给的方案:在tomcat中配cors的filter,添加了相关jar包(cors-filter-2.5,java-property-utils-1.10),不起作用

PHPz
PHPz

学习是最好的投资!

全部回复(4)
巴扎黑

在windows系统中,新建chrome浏览器的快捷方式,右键-目标,加入 --disable-web-security --user-data-dir

在mac系统中,终端执行:open -a "Google Chrome" --args --disable-web-security --user-data-dir

怪我咯

跨域解决方法:
方法1:浏览器设置跨域
方法2:加代理
3:楼下补充

--
关于:Access-Control-Allow-Origin

a.com/index.html跨域调用b.com/apib.com/api需要在Response Header中设置Access-Control-Allow-Origin: a.com。意思是我b.com/api允许a.com下的网站跨域调用我的资源

怪我咯

网站如果可以使用JSONP的话,可以跳过跨域问题,如果不支持,就请你的后端帮你解决吧。。

PHP中文网

服务器端设置response的head
前端ajax配置
xhrFields:{withCredentials: true},
crossDomain:true,
此方法是通过CROS解决

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号