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/ ...
随机推荐
- Java生鲜电商平台-小程序或者APP拼团功能设计与架构实战
Java生鲜电商平台-小程序或者APP拼团功能设计与架构实战 说明:Java生鲜电商平台拼团是拉新引流的利器,将拼团运用到极致的就是拼多多,前期通过选取性价比高.实用性强的商品进行拼团,在社交圈(主要 ...
- 小程序PromiseAll定义
var promiseAll = (funcs, callback) =>{ var promises = [] for(var i=0; i<funcs.length; i++){ pr ...
- 《React后台管理系统实战 :一》:目录结构、引入antd、引入路由、写login页面、使用antd的form登录组件、form前台验证、高阶函数/组件
实战 上接,笔记:https://blog.csdn.net/u010132177/article/details/104150177 https://gitee.com/pasaulis/react ...
- C. Maximum Median 二分
C. Maximum Median 题意: 给定一个数组,可每次可以选择一个数加1,共执行k次,问执行k次操作之后这个数组的中位数最大是多少? 题解:首先对n个数进行排序,我们只对大于中位数a[n/2 ...
- PAT B1020 月饼
#include<iostream> #include<algorithm> using namespace std; struct mooncake { double sto ...
- Linux CentOS7 VMware 特殊权限set_uid、特殊权限set_gid、特殊权限stick_bit、软链接文件、硬连接文件
一.特殊权限set_uid root用户本身拥有对/etc/passwd的写权限,无可厚非:那普通用户呢,这里就用到了setuid,setuid的作用是“让执行该命令的用户以该命令拥有者的权限去执行” ...
- 大数据篇:DolphinScheduler-1.2.0.release安装部署
大数据篇:DolphinScheduler-1.2.0.release安装部署 1 配置jdk #查看命令 rpm -qa | grep java #删除命令 rpm -e --nodeps xxx ...
- 跳蚤[BZOJ4310](后缀数组+二分答案传判定)
不知道后缀数组的请退回去! 题面: 题目描述 很久很久以前,森林里住着一群跳蚤.一天,跳蚤国王得到了一个神秘的字符串,它想进行研究.首先,他会把串分成不超过 k 个子串,然后对于每个子串 S,他会从S ...
- Kubernetes——命令行操作
如果集群初始化失败需要的操作: master: kubeadm reset #回答y 执行一条它提示给你的iptables命令即可 node: systemctl stop kubelet ...
- swagger获取
参考 https://www.jianshu.com/p/840320d431a1 https://www.cnblogs.com/luoluocaihong/p/7106276.html