Heim > Backend-Entwicklung > PHP-Tutorial > ajax 跨域解决方法,ajax跨域_PHP教程

ajax 跨域解决方法,ajax跨域_PHP教程

WBOY
Freigeben: 2016-07-13 10:23:59
Original
1238 Leute haben es durchsucht

ajax 跨域解决方法,ajax跨域

最近在开发过程中,使用ajax去异步调取图片。在开发中这个功能没什么问题,可以后来提测,重新部署之后就有问题了,这就是ajax的跨域问题。

ajax本身是不支持跨域的,这是由于javascript的同源策略所导致。但是我们可以通过其他方法来解决ajax的跨域问题。

1  由于我们是利用了jquery来写的ajax,我们一开始是准备 利用jsonp来解决的,客户端类似下面写法

$.ajax({
	type : "get",
	async:false,
	url : "http://www.xxx.com/ajax.do",
	dataType : "jsonp",
	jsonp: "callbackparam",//服务端用于接收callback调用的function名的参数
	jsonpCallback:"success_jsonpCallback",//callback的function名称
	success : function(json){
		alert(json);
		alert(json[0].name);
	},
	error:function(){
		alert('fail');
	}
});
Nach dem Login kopieren

  服务器端写法

public void ProcessRequest (HttpContext context) {
	context.Response.ContentType = "text/plain";
	String callbackFunName = context.Request["callbackparam"];
	context.Response.Write(callbackFunName + "([ { name:\"John\"}])");
}
Nach dem Login kopieren

  这个方法其实蛮简单的,跟我们之前写的改动不大。

2  由于我们这次项目开发的页面比较多,改动起来涉及的地方就比较多了。最后是采取的 直接修改nginx配置实现的。平时对反向代理的理解也就是 缓存、安全、负载均衡,所以查了下方向代理

反向代理(Reverse Proxy),顾名思义,就是代理的反向功能。我们使用代理,可以访问一些我们所不能直接访问到的网络,或者可以隐藏自己的真实身份。而反向代理,可以在不暴露内部服务器的情况下,让外部用户访问我们内部、防火墙后的服务。

 

        

    使用反向代理主要有以下好处:

1  请求的统一控制,包括设置权限、过滤规则等;

2  隐藏内部服务真实地址,暴露在外的只是反向代理服务器地址;

3  实现负载均衡,内部可以采用多台服务器来组成服务器集群,外部还是可以采用一个地址访问;

 4 解决Ajax跨域问题。

 5 作为真实服务器的缓冲,解决瞬间负载量大的问题。

项目完成之后,对ajax跨域问题在网上查了查,还知道了通过HTML中可以请求跨域资源的标签引用来达到跨域的目的,其实jsonp本质上就是采用了这种办法。

HTML中可以请求跨域资源的标签是很多的,

Script无疑是最合适的。在请求每一个脚本资源时,浏览器都会去解析并运行脚本文件内定义的函数,或需要马上执行的JavaScript代码,我们可以通过服务器返回一段脚本或JSON对象,在浏览器解析执行,从而达到跨域请求的目的。使用script标签来实现跨域请求,只能使用get方法请求服务器资源。并且传参的长度也受到地址栏长度的限制。

AJAX跨域访问解决方法

从你的问题描述中,我无法看出你真正的问题是什么,请问:一、你的IIS配置中是否支持匿名访问?二、你在ajax交互时url用的是相对路径吗?还是交互的不是自己网站的网址? 关于JS跨域访问,如果非要访问其它网站的资源,解决方法有:一、通过iframe连接其它网站二、ajax间接通过后台访问对方网站的资源,如访问对方网站的webservice
 

对于ajax跨域的解决方案

参考1

主页面代码:



涓婚〉
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage