跨域,前端开发中经常遇到的问题,AngularJS实现跨域方式类似于Ajax,使用CORS机制。

下面阐述一下AngularJS中使用$http实现跨域请求数据。
AngularJS XMLHttpRequest:$http用于读取远程服务器的数据
$http.post(url, data, [config]).success(function(){ ... });
$http.get(url, [config]).success(function(){ ... });
$http.get(url, [config]).success(function(){ ... });
一、$http.jsonp【实现跨域】
1. 指定callback和回调函数名,函数名为JSON_CALLBACK时,会调用success回调函数,JSON_CALLBACK必须全为大写。
2. 指定其它回调函数,但必须是定义在window下的全局函数。url中必须加上callback。
二、$http.get【实现跨域】
1. 在服务器端设置允许在其他域名下访问
response.setHeader("Access-Control-Allow-Origin", "*"); //允许所有域名访问
response.setHeader("Access-Control-Allow-Origin", "http://www.123.com"); //允许www.123.com访问
2. AngularJS端使用$http.get()
三、$http.post【实现跨域】
1. 在服务器端设置允许在其他域名下访问,及响应类型、响应头设置
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Methods","POST");
response.setHeader("Access-Control-Allow-Headers","x-requested-with,content-type");
2. AngularJS端使用$http.post(),同时设置请求头信息
$http.post('http://localhost/ajax/getAllIndustryCategoty.pt',{languageColumn:'name_eu'},{'Content-Type':'application/x-www-form-urlencoded'}).success(function(data){
$scope.industries = data;
});
四、实现方式
跨域方式一【JSONP】:
方法一:
$http.jsonp("http://localhost/sitesettings/getBadgeInfo.pt?jsonp=JSON_CALLBACK&siteid=137bd406").success(function(data){ ... });
// The name of the callback should be the string JSON_CALLBACK.
方法二【返回值,需要使用对应callback方法接收,但如何置于$scope?】:
$http.jsonp("http://localhost/sitesettings/getBadgeInfo.pt?jsonp=badgeabc&siteid=137bd406");
function badgeabc(data){ ... }
public String execute() throws Exception {
String result = FAIL;
response.setHeader("", "");
SiteHandlerAction siteHandlerAction = (SiteHandlerAction)BeansFactory.getBean(SiteHandlerAction.class);
BadgeHandlerAction badgeHandlerAction = (BadgeHandlerAction)BeansFactory.getBean(BadgeHandlerAction.class);
if("".equals(siteid) || siteid == null || StringUtils.isBlank("jsonp")){
result = FAIL;
}else{
Site site = siteHandlerAction.find(siteid);
UserBadgeStatus userBadgeStatus = badgeHandlerAction.getUserBadgeStatus(site.getId());
if(userBadgeStatus != null){
result = "{\"t\":"+userBadgeStatus.getStyle()+",\"l\":"+userBadgeStatus.getSuspend_location()+",\"s\":"+site.getId()+"}";
JSONObject jsonObj = JSONObject.fromObject(result);
String json = jsonObj.toString();
result = jsonp + "(" + json + ")";
}
}
PrintWriter write = response.getWriter();
write.print(result);
write.flush();
write.close();
return NONE;
}
跨域方式二【$http.get()】:
function getAdustryController($scope,$http){
$http.get('http://localhost/ajax/getAllIndustryCategoty.pt?languageColumn=name_eu').success(function(data){
$scope.industries = data;
});
}
跨域方式三【$http.post()】:
function getAdustryController($scope,$http){
$http.post('http://localhost/ajax/getAllIndustryCategoty.pt',{languageColumn:'name_eu'},{'Content-Type':'application/x-www-form-urlencoded'}).success(function(data){
$scope.industries = data;
});
}
// java端支持跨域请求
public String execute(){
response.setHeader("Access-Control-Allow-Origin", "*"); //允许哪些url可以跨域请求到本域
response.setHeader("Access-Control-Allow-Methods","POST"); //允许的请求方法,一般是GET,POST,PUT,DELETE,OPTIONS
response.setHeader("Access-Control-Allow-Headers","x-requested-with,content-type"); //允许哪些请求头可以跨域
SiteHandlerAction SiteHandler = (SiteHandlerAction) BeansFactory.getBean(SiteHandlerAction.class);
List list = SiteHandler.getAllIndustryCategory(); //所有的分类集合
JSONArray jsonArray = JSONArray.fromObject(list); //将list转为json
String json = jsonArray.toString(); //转为json字符串
try {
PrintWriter write = response.getWriter();
write.print(json);
write.close();
} catch (IOException e) {
e.printStackTrace();
}
return NONE;
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# angular2
# post
# 跨域
# angular2.0
# angular
# post跨域
# Angular4开发解决跨域问题详解
# AngularJS实现的JSONP跨域访问数据传输功能详解
# angular.js中解决跨域问题的三种方式
# 详解基于angular-cli配置代理解决跨域请求问题
# Angular实现跨域(搜索框的下拉列表)
# 解析AngularJS中get请求URL出现的跨域问题
# 详解AngularJS如何实现跨域请求
# AngularJs解决跨域问题案例详解(简单方法)
# AngularJS iframe跨域打开内容时报错误的解决办法
# 回调
# 类似于
# 大家多多
# 返回值
# type
# content
# localhost
# ajax
# pt
# getAllIndustryCategoty
# www
# Origin
# Methods
# requested
# Headers
相关文章:
已有域名如何快速搭建专属网站?
家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?
怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?
如何快速配置高效服务器建站软件?
婚礼视频制作网站,学习*后期制作的网站有哪些?
移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?
高端云建站费用究竟需要多少预算?
建站之星手机一键生成:多端自适应+小程序开发快速建站指南
php条件判断怎么写_ifelse和switchcase的使用区别【对比】
建站IDE高效指南:快速搭建+SEO优化+自适应模板全解析
如何快速查询网址的建站时间与历史轨迹?
详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)
建站之星安装后如何配置SEO及设计样式?
如何在局域网内绑定自建网站域名?
建站之星如何通过成品分离优化网站效率?
行程制作网站有哪些,第三方机票电子行程单怎么开?
如何在建站宝盒中设置产品搜索功能?
湖南网站制作公司,湖南上善若水科技有限公司做什么的?
如何通过远程VPS快速搭建个人网站?
英语简历制作免费网站推荐,如何将简历翻译成英文?
如何通过智能用户系统一键生成高效建站方案?
测试制作网站有哪些,测试性取向的权威测试或者网站?
深圳网站制作培训,深圳哪些招聘网站比较好?
免费ppt制作网站,有没有值得推荐的免费PPT网站?
如何通过西部数码建站助手快速创建专业网站?
高性能网站服务器部署指南:稳定运行与安全配置优化方案
如何在IIS7中新建站点?详细步骤解析
专业公司网站制作公司,用什么语言做企业网站比较好?
建站之星与建站宝盒如何选择最佳方案?
如何通过二级域名建站提升品牌影响力?
建站之星五站合一营销型网站搭建攻略,流量入口全覆盖优化指南
专业网站制作企业网站,如何制作一个企业网站,建设网站的基本步骤有哪些?
教学论文网站制作软件有哪些,写论文用什么软件
?
建站主机功能解析:服务器选择与快速搭建指南
网站app免费制作软件,能免费看各大网站视频的手机app?
html制作网站的步骤有哪些,iapp如何添加网页?
如何在七牛云存储上搭建网站并设置自定义域名?
如何快速生成ASP一键建站模板并优化安全性?
名字制作网站免费,所有小说网站的名字?
洛阳网站制作公司有哪些,洛阳的招聘网站都有哪些?
较简单的网站制作软件有哪些,手机版网页制作用什么软件?
专业网站设计制作公司,如何制作一个企业网站,建设网站的基本步骤有哪些?
简历在线制作网站免费版,如何创建个人简历?
建站之星如何保障用户数据免受黑客入侵?
建站上市公司网站建设方案与SEO优化服务定制指南
如何快速打造个性化非模板自助建站?
建站之星如何实现五合一智能建站与营销推广?
c# F# 的 MailboxProcessor 和 C# 的 Actor 模型
建站之星IIS配置教程:代码生成技巧与站点搭建指南
国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。