js ajax跨域调用
正常使用ajax调用java.com
$.ajax({
type: 'get',
url: 'http://www.java.com/custinfo?id=888',
dataType: 'json',
success: function(data){
console.log('成功');
}
});
你会发现无法调用
原因:
JavaScript出于安全方面的考虑,不允许跨域调用其他项目。
跨域,由于浏览器同源策略的限制,a.com 无法调用 b.com
解决方案: JSONP
JQuery调用jsonp
var url = 'http://www.java.com/custinfo?id=888&jsoncallback=?';
$.getJSON(url,function(data){
console.log('成功');
});
注意:如果java.com返回的是JSON格式的数据,你是取不到的。
你会发现回调函数并没有调用
json格式示例:
{
"code":"200",
"msg":"成功" ,
"data":[
{
"custNo":"100088"
"id":"888"
}
]
}
如果服务端返回的是上面JSON格式的数据你是取不到的。
需要服务端修改代码,返回JSONP格式的数据。
jsonp格式示例:
jsonpcallback(
{
"code":"200",
"msg":"成功" ,
"data":[
{
"custNo":"100088"
"id":"888"
}
]
}
)
看到两种格式的区别了吗?
-----------------------------------------------------------------------------
JSONP 只可以发送 GET 请求,无法发送其他类型的请求,
推荐在后端通过 (CORS,Cross-origin resource sharing) 来解决跨域问题。
传统的SSM 框架通过在 XML 文件中配置 CORS 来解决跨域问题 ,
Spring Boot通过实现WebMvcConfigurer接口然后重写addCorsMappings方法解决跨域问题
@Configuration
public class CorsConfig implements WebMvcConfigurer { @Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("*")
.allowCredentials(true)
.allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")
.maxAge(3600);
} }
----------------------------------------------------------------------------------
Spring Boot项目前后端分离部署需要解决跨域问题。
cookie存放用户登录信息,在spring拦截器进行权限控制,当权限不符合时,直接返回给用户固定的json结果。
当用户登录以后,正常使用;当用户退出登录状态时或者token过期时,由于拦截器和跨域的顺序有问题,出现了跨域的现象。
http请求,先走filter,到达servlet后才进行拦截器的处理,把cors放在filter里,就可以优先于权限拦截器执行。
@Configuration
public class CorsConfig { @Bean
public CorsFilter corsFilter() {
CorsConfiguration corsConfiguration = new CorsConfiguration();
corsConfiguration.addAllowedOrigin("*");
corsConfiguration.addAllowedHeader("*");
corsConfiguration.addAllowedMethod("*");
corsConfiguration.setAllowCredentials(true);
UrlBasedCorsConfigurationSource urlBasedCorsConfigurationSource = new UrlBasedCorsConfigurationSource();
urlBasedCorsConfigurationSource.registerCorsConfiguration("/**", corsConfiguration);
return new CorsFilter(urlBasedCorsConfigurationSource);
} }
js ajax跨域调用的更多相关文章
- js Ajax跨域调用JSON并赋值全局变量
//跨域调用JSON <script type="text/javascript"> function _callback(obj) { alert(obj); } j ...
- jquery ajax跨域调用
客户端: //ajax跨域调用的方法 $.ajax({ url:dustUrl+"/screenshot/getDevices.do", type: "get" ...
- 以短链服务为例,探讨免AppKey、免认证、Ajax跨域调用新浪微博API
新浪微博的API官方提供了很多种调用方式,支持编程的,归根结底就是两种: 1.基于Oauth协议,使用Open API.(http://open.weibo.com/wiki/%E6%8E%88%E6 ...
- AJAX跨域调用相关知识-CORS和JSONP(引)
AJAX跨域调用相关知识-CORS和JSONP 1.什么是跨域 跨域问题产生的原因,是由于浏览器的安全机制,JS只能访问与所在页面同一个域(相同协议.域名.端口)的内容. 但是我们项目开发过程中,经常 ...
- AJAX跨域调用ASP.NET MVC或者WebAPI服务
关于AJAX跨域调用ASP.NET MVC或者WebAPI服务的问题及解决方案 作者:陈希章 时间:2014-7-3 问题描述 当跨域(cross domain)调用ASP.NET MVC或者ASP. ...
- 支持ajax跨域调用的WCF搭建示例
支持ajax 跨域调用的WCF搭建 1.新建一个"ASP.NET空Web应用程序"项目. 2.新建一个“WCF服务(支持ajax)”. 3.修改WCFAjaxService.svc ...
- AJAX跨域调用ASP.NET MVC的问题及解决方案
AJAX跨域调用ASP.NET MVC的问题及解决方案 问题描述: 解决方法: 只需要在web.config中添加如下标为红色的内容即可: <system.webServer> <h ...
- JS Ajax跨域访问
js ajax跨域访问报"No 'Access-Control-Allow-Origin' header is present on the requested resource 如果请求的 ...
- 调用ajax 跨域调用接口
//ajax 跨域请求数据 function ajaxType (){ $.ajax({ url: "http://127.0.0.1:9090/spring_mvc/HttpClient/ ...
随机推荐
- 通过修改select的value值
1 <input type="button" id="btn" value="按钮"/> 2 <select name=& ...
- 《iOS设计模式解析》书籍目录
1.你好,设计模式 2.案例分析:设计一个应用程序 3.原型 4.工厂方法 5.抽象工厂 6.生成器 7.单例 8.适配器 9.桥接 10.外观 11.中介者 12.观察者 13.组合 14.迭代器 ...
- C++ 结构体指针理解
上一篇基础链接https://www.cnblogs.com/xuexidememeda/p/12283845.html 主要说一下链表里面双重指针 先说一下结构体 typedef struct LN ...
- 远程服务器使用tensorboard
1 .由于服务器上tensorboard使用的端口是6006,因此,连接ssh时,将服务器的6006端口重定向到自己机器上的16006端口: ssh -L 16006:127.0.0.1:6006 u ...
- Iterator作用
前言 下面的内容是我从百度知道拷贝出来的,也就不在贴出链接了.我总结下就是迭代器在集合中使用,用户不需要关心具体集合实现的是如何遍历(不暴露细节),按照迭代器的方式遍历. 作用 Iterator模式是 ...
- 将varchar2类型字段改成clob类型
--增加临时新字段alter table base_temp add temp clob; --将需要改成大字段的项内容copy到大字段中update base_temp set temp=con ...
- Linux centos7 awk工具
一.awk介绍 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk含盖sed所有功能,把文件逐行的读入,以空格为默认分隔 ...
- Lognormal distribution 对数正态分布
转载:https://blog.csdn.net/donggui8650/article/details/101556041 在概率论中,对数正态分布是一种连续概率分布,其随机变量的对数服从正态分布. ...
- vue - 封装input
input子组件 <el-input :value="value" placeholder="请输入内容" size="small" ...
- HttpServletRequest 或 HttpServletResponse显示红色,需引用的依赖包:servlet-api.jar
解决方法: