本文共 2513 字,大约阅读时间需要 8 分钟。
js跨域方式无非就是使用jsonp,这种方法很大众,还有一种方式也可以,那就是在服务器端设置允许任何访问 PHP中代码为: [php] view plain copy print?在CODE上查看代码片派生到我的代码片 01.header("Access-Control-Allow-Origin:*"); //允许任何访问(包括ajax跨域) PHP跨域访问的3种方法 近来项目中遇到跨服务器访问的问题,研究了好些日子,总结如下: 1、用file_get_contents方法 $host = 'url'; $randomNumber=file_get_contents($host); echo $$randomNumber; 2、用Curl $host = 'url'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $host); // 返回结果 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, 0); // 使用POST提交 curl_setopt($ch, CURLOPT_POST, 1); // POST参数 $str = array('a=1','b=2','c=3'); curl_setopt($ch, CURLOPT_POSTFIELDS, $str); // 结果 $res = curl_exec($ch); curl_close($ch); 使用curl库,使用curl库之前,你可能需要查看一下php.ini,查看是否已经打开了curl扩展 3、 用fopen打开url, 以get方式获取内容 <?php $url="http://www.dnjs.net/"; $fp=fopen($url,'r'); while(!feof($fp)){ $result.=fgets($fp,1024); } echo" $result"; fclose($fp); ?> 将网页设置为允许 XMLHttpRequest 跨域访问 在非IE下,使用XMLHttpRequest 不能跨域访问, 除非要访问的网页设置为允许跨域访问。 将网页设置为允许跨域访问的方法如下: Java Response.AddHeader("Access-Control-Allow-Origin", "*"); 或指定域名下可以访问: Response.AddHeader("Access-Control-Allow-Origin", "http://www.1688hot.com:80"); PHP echo:header("Access-Control-Allow-Origin: *"); echo:header("Access-Control-Allow-Origin: http://www.1688hot.com:80"); html <meta http-equiv="Access-Control-Allow-Origin" content="*"> <meta http-equiv="Access-Control-Allow-Origin" content="http://www.1688hot.com:80"> 在返回的响应信息中,使用 Access-Control-Allow-Origin 头来控制哪些域名的脚本可以访问该资源。如果设置 Access-Control-Allow-Origin:*,则允许所有域名的脚本访问该资源。如果有多个,则只需要使用逗号分隔开即可。 注意:在服务器端,Access-Control-Allow-Origin 响应头中的端口信息不能省略。 HTTPS和HTTP的区别: https协议需要到ca申请证书,一般免费证书很少,需要交费。 http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。 http和https使用的是完全不同的连接方式用的端口也不一样,前者是80,后者是443。 http的连接很简单,是无状态的。 HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议 要比http协议安全。 在被请求的php文件里增加: header(“Access-Control-Allow-Origin: *”); header(“Access-Control-Allow-Methods”, “POST,OPTIONS,GET”); 另外: 在chrome浏览器或者firefox浏览器里,由于安全限制的原因,本地调试JS,如果不配服务器环境而直接打开页面,那所有的AJAX操作会抛出下面错误: XMLHttpRequest cannot load file:///D:/file.html. Origin null is not allowed by Access-Control-Allow-Origin. Origin null is not allowed by Access-Control-Allow-Origin. 的意思就是由于安全原因浏览器不允许跨域访问。 chrome、firfox、opera都出现了这种情况,因为有安全沙箱,它们认为加载本地其它html文件为跨域访问。但是使用IE8就不会出现这种错误,很多人不是很理解。 这里Windows help and support 做出了解释 IE本身也并不是允许跨域的因为这样很不安全,但是如果不跨域的话又带来很多不便,所以会让你手动的选择一下是否允许跨域。而chrome、firfox、opera则默认就是不允许。 另外: CORS的一篇文章: https://developer.mozilla.org/en-US/docs/HTTP/Access_control_CORS 另外: 如果脚本可以和同域的php交互的话,可以使用php的curl等方式帮助传输数据。转载地址:http://scjoi.baihongyu.com/