加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ajax跨域请求问题

发布时间:2020-12-16 03:25:36 所属栏目:百科 来源:网络整理
导读:$("#qwer").click(function(){ $.ajax({ type : "POST",url : ctx + "/test/aaa?callback=?",//url : ""dataType : 'json',success : function(data) {alert('sssss');}});}); ajax跨域:ajax本身实际上是通过XMLHttpRequest对象来进行数据的交互,而浏览器
$("#qwer").click(function(){
	$.ajax({
		type : "POST",url : ctx + "/test/aaa?callback=?",//url : ""
		dataType : 'json',success : function(data) {
			alert('sssss');
		}
	});
});

ajax跨域:ajax本身实际上是通过XMLHttpRequest对象来进行数据的交互,而浏览器出于安全考虑,不允许js代码进行跨域操作,所以会警告

如果服务端和客户端我们都可以控制,对服务端进行改造,跨域请求添加一个参数callback可以随意设置,这个参数加在url请求的后面,服务端响应请求后需要在返回的数据外面包裹一层:包裹callback参数名称(json数据)
一般jquery解决跨域是通过jsonp的方式,添加callback=xxx,服务器返回xxx(...)

response.setContentType("application/json;charset=utf-8");
response.getWriter().write(request.getParameter("callback") + "(" + new Gson().toJson(result.getResult()) + ")");



另一种方法:cors跨域资源共享【网络浏览器的技术规范,为web服务器定义了一种方式,允许网页从不同的域访问它的资源】通过在服务端设置"Access-Control-Allow-Origin"来进行的
Access-Control-Allow-Origin。HTTP响应头,指定服务器端允许进行跨域资源访问的来源域。可以用通配符*表示允许任何域的JavaScript访问资源,但是在响应一个携带身份信息(Credential)的HTTP请求时,Access-Control-Allow-Origin必需指定具体的域,不能用通配符。

在地址url前加前缀:"http://www.corsproxy.com/"将不允许跨域的请求变为允许跨域的请求
www.corsproxy.com 大概是在今年2月份左右挂掉的,具体信息和关闭理由未知。
能应用于所有的跨域请求,原理就是过一遍代理然后在header里写上 Access-Control-Allow-Origin:*
现在的替代站点有 http://crossorigin.me/ http://atcors.herokuapp.com/ 。国内不清楚,不过北美这边相应速度倒是挺快的。
或者你可以选择自己搭一个专用的。 corsproxy-npm

现在只能在自己的后端代码加
respons.setHeader("Access-Control-Allow-Origin","*");

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读