PHP-Ajax跨域解决方案
2013-09-26 09:55
281 查看
1.先了解下Ajax跨域问题:
如果以上代码放到Apache服务器下, 访问的话不会得到任何结果, 也就是说Ajax只能访问本站的资源。
那为什么限制Ajax跨域呢?
安全!如果能跨域访问的话, 想想CSRF攻击!
解决方案:
1.建立中间层;
用Ajax访问本站, 本站PHP利用file_get_contents()或CURL等工具去请求指定URL并返回想要结果
2.利用jQuery的一些Ajax访问方法, 比如$.ajax(), jQuery.getScript(), $.getJson等
3.直接改变script标签的src属性, 而src属性对应的URL返回设置的值(比如返回'var param="abcd";', 则页面可以直接调用param变量)
4.由于src属性(比如script、img、iframe)都拥有跨域的能力, 所以可以利用jsonp(可以认为是一种方式, 利用src), 虽然jQuery把jsonp归入ajax, 但他们真不是一回事儿, ajax的核心是通过XmlHttpRequest获取非本页内容, 而jsonp的核心则是动态添加<script>标签来调用服务器提供的js脚本
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>AJAX跨域验证</title> <script> var xmlHttp; function createXMLHttpRequest() { if (window.ActiveXObject) { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); } else if (window.XMLHttpRequest) { xmlHttp = new XMLHttpRequest(); } } function hello() { var url = 'http://www.google.com'; createXMLHttpRequest(); xmlHttp.onreadystatechange = showResponse; xmlHttp.open("GET", url, true); xmlHttp.send(null); } function showResponse(){ if(xmlHttp.readyState == 4) { if(xmlHttp.status == 200) { document.getElementById("result").setAttribute("value",xmlHttp.responseText) ; } } } </script> </head> <body> <input type="button" value="hello" onclick="hello()"><br/><br/> <textarea id="result" name="result" cols=100 rows=100 ></textarea> </body> </html>
如果以上代码放到Apache服务器下, 访问的话不会得到任何结果, 也就是说Ajax只能访问本站的资源。
那为什么限制Ajax跨域呢?
安全!如果能跨域访问的话, 想想CSRF攻击!
解决方案:
1.建立中间层;
用Ajax访问本站, 本站PHP利用file_get_contents()或CURL等工具去请求指定URL并返回想要结果
2.利用jQuery的一些Ajax访问方法, 比如$.ajax(), jQuery.getScript(), $.getJson等
3.直接改变script标签的src属性, 而src属性对应的URL返回设置的值(比如返回'var param="abcd";', 则页面可以直接调用param变量)
4.由于src属性(比如script、img、iframe)都拥有跨域的能力, 所以可以利用jsonp(可以认为是一种方式, 利用src), 虽然jQuery把jsonp归入ajax, 但他们真不是一回事儿, ajax的核心是通过XmlHttpRequest获取非本页内容, 而jsonp的核心则是动态添加<script>标签来调用服务器提供的js脚本
相关文章推荐
- [跨域] -- PHP Ajax 跨域问题最佳解决方案
- PHP Ajax 跨域问题最佳解决方案
- PHP Ajax 跨域问题最佳解决方案【同源问题】
- php ajax跨域问题最佳解决方案
- PHP Ajax 跨域问题最佳解决方案
- 黄聪:PHP Ajax 跨域问题最佳解决方案
- PHP Ajax 跨域问题最佳解决方案
- PHP Ajax 跨域问题最佳解决方案
- PHP Ajax 跨域问题最佳解决方案
- PHP Ajax 跨域问题最佳解决方案
- PHP Ajax 跨域问题最佳解决方案
- PHP Ajax 跨域问题最佳解决方案
- PHP Ajax 跨域问题最佳解决方案
- PHP Ajax 跨域问题最佳解决方案
- PHP Ajax 跨域问题最佳解决方案
- PHP Ajax 跨域问题最佳解决方案
- PHP Ajax 跨域问题最佳解决方案
- PHP Ajax 跨域问题最佳解决方案
- PHP下ajax跨域的解决方案之window.name
- PHP Ajax 跨域问题最佳解决方案