跨域说明
跨域指请求和服务的域不一致,浏览器和H5的ajax请求有影响,而对服务端之间的http请求没有限制。
跨域是浏览器拦截了服务器端返回的相应,不是拦截了请求。
jsonp跨域请求处理
Jsonp(JSON with Padding) 是 json的一种\"使用模式\",可以让网页从别的域名(网站)那获取资料,绕过同源策略(若地址里面的协议、域名和端口号均相同则属于同源),即跨域读取数据。
jsonp:利用 标签可以跨域,让服务器端返回可执行的 函数,参数为要回发的数据。可看做带有回调函数的ajax请求。
js代码
< type=\"text/ \">
$(function(){
/*
//简写形式,效果相同
$.getJSON(\"http://app.example.com/ /json.do?sid=1494&busiId=101&jsonpCallback=?\",
function(data){
$(\"#showcontent\").text(\"Result:\"+data.result)
});
*/
$.ajax({
type : \"get\",
async:false,
url : \"http:/XXX\",
dataType : \"jsonp\",//数据类型为jsonp
jsonp: \"jsonpCallback\",//服务端用于接收callback调用的function名的参数
jsonpCallback:\"自定义回调函数名\"
success : function(data){
alert(data.info)
},
error:function(){
alert(\'fail\');
}
});
});
</ >
java后端处理代码
@ResponseBody
@RequestMapping(value = \"/url\", produces= MediaType.APPLICATION_JSON)
public String test(
HttpServletRequest request,
HttpServletResponse response) throws Exception{
String result = getResult();
response.setHeader(\"Pragma\", \"no-cache\");
response.setHeader(\"Cache-Control\", \"private,no-cache,no-store,max-age=0\");
response.setDateHeader(\"Expires\", 0);
String str=request.getParameter(\"jsonpCallback\");
if (str==null||str.equals(\"\")) {
return result;
} else {
return str + \"(\" + result + \")\";
}
}
CORS(协议跨域资源共享)(Cross-origin resource sharing)
它允许浏览器向跨源服务器,发出 HttpRequest请求,从而克服了AJAX只能同源使用的限制 详细介绍 戳此
- Access-Control-Allow-Origin:* 允许所有域名的脚本访问该资源
- Access-Control-Allow-Methods:GET,POST,PUT,DELETE,OPTIONS 运行什么方式访问资源
- Access-Control-Expose-Headers:x-requested-with 暴露的信息
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
继续阅读与本文标签相同的文章
-
[译] 我们为什么看好加密收藏品(NFT)的前景
2026-05-19栏目: 教程
-
Knative Eventing 之 Parallel 介绍
2026-05-19栏目: 教程
-
[译] 实用的 MVVM 和 RxSwift
2026-05-19栏目: 教程
-
开发函数计算的正确姿势——使用交互模式安装依赖
2026-05-19栏目: 教程
-
[译] 对 React 组件进行单元测试
2026-05-19栏目: 教程
