这种应该是开发中是使用的最多的,最多见的跨域请求方法,其实ajax自己是不能够跨域的,经过产生一个script标来实现跨域。由于script标签的src属性是没有跨域的限制的。javascript
其实设置了dataType: 'jsonp'后,$.ajax方法就和ajax XmlHttpRequest没什么关系了,取而代之的则是JSONP协议。JSONP是一个非官方的协议,它容许在服务器端集成Script tags返回至客户端,经过javascript callback的形式实现跨域访问。可是最大的缺点就是只支持get方式,只支持get方式,只支持get方式php
实现原理:html
服务器端servertest.php代码前端
这是HTML5中提供的XMLHTTPREQUEST Level2(及XHR2),已经实现了跨域访问。但ie10如下不支持,但ie10如下不支持,但ie10如下不支持,java
不过在于操做简单,只须要在服务端填上响应头:linux
header("Access-Control-Allow-Origin:*");
header("Access-Control-Allow-Methods:GET,POST");
也许之后是一个趋势。nginx
这种方案估计用的最少,由于你首先得有一个代理服务器才行,对于小型项目来说,这个几乎都不会去碰它,下面我就简单介绍一下在linux下搭建nginx代理服务器。c++
我用的是 nginx-1.10.1.tar.gz 进行安装,测试,ajax
安装就不细说了,上传包nginx-1.10.1.tar.gz和依赖zlib-1.2.8.tar.gz;pcre-8.39.tar.gz,挂载,json
yum --disablerepo=\* --enablerepo=c6-media install gcc gcc-c++ openssl openssl-devel cyrus-sasl-md5
tar zxvf nginx-1.10.1.tar.gz
tar zxvf zlib-1.2.8.tar.gz
tar zxvf pcre-8.39.tar.gz
cd nginx-1.10.1 //进入目录
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-pcre=../pcre-8.39 --with-zlib=../zlib-1.2.8
//编译安装
make && make install
找到配置文件,Nginx.conf 修改必要端口(固然,你80没用能够不改)
代码:
server { listen 8024; server_name proxy.nginx.com; location ~* ^/ajax/.* { #请求的主机域名; proxy_set_header Host $host; #转的目标IP; proxy_set_header X-Real-IP $remote_addr; #转发的目标 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #禁止缓冲 proxy_buffering off; proxy_pass http://192.168.136.126:8080; } }
重启nginx:(nginx -s reload) (须要在/etc/profile文件中设置环境变量)
而后访问:
http://proxy.nginx.com:8024/ajax/yyy (proxy.nginx.com是本身定义的虚拟主机名。可用localhost,看我的爱好)
http://proxy.nginx.com:8024/ajax/xxx?abc=123
都会被转发到
http://192.168.136.126:8080/ajax/yyy
http://192.168.136.126:8080/ajax/xxx?abc=123
半夜写的不容易,请轻拍!!
本人原文连接:http://www.cnblogs.com/shaozeming/articles/6072248.html