跨域

mac2024-03-22  28

什么是跨域 简单的理解就是因为JavaScript同源策略的限制,a.com域名下的js无法操作b.com或者c.a.com域名下的对象。 http://mail.163.com/index.html http代表协议 还可以是ftp协议 file 协议telnet协议mailto协议 mail代表服务器是邮件服务器,www代表是web服务器 163.com是域名 .com是顶级域名 /是根目录 {前面的协议或域名有任何一个不同就是跨域} index.html 是根目录下的文件 端口号不同都算做不同的域 端口号8080和端口号8081就是两个不同的域事实上HTTP和HTTPS两个协议的url看上去都可以省略端口号,但是他们访问的默认端口不同HTTP默认访问80端口,HTTPS默认访问443端口,所以http访问https肯定是跨域1.处理跨域方法一 :代理通过在同域名的web服务器端创建一个代理

例如:北京服务器(域名:www.beijing.com),上海服务器(域名:www.shanghai.com)

在北京的web服务器的后台(www.beijing.com/proxy-shanghaiservice.php)来调用上海服务器(www.shanghai.com/services.php)的服务,然后再把访问结果返回给前端,这样前端调用北京同域名的服务就和调用上海的服务效果相同了。

  2.处理跨域方法二JSONP(JSONP只支持GET方式不支持POST方式) 在某个域名(www.aaa.com)的页面中,声明一个jsonp方法 然后在下面载入另一个域名的js(www.bbb.com/jsonp.js),也就是说,<script>这个标签是可以向另一个域名提交http请求的 即,a域名去声明,b域名去调用 前端代码两处改动: 在get请求的代码中, dataType:"jsonp", jsonp:"callback123" (jsonp的值可任意写) 后端代码改动: 在search()函数中加入代码$jsonp=$_GET["前端所取的jsonp的名字"] 返回值加括号 $result = $jsonp . '( { "success":false , "msg":"没有找到员工" } )'; $result = $jsonp . '( { ……… } )'; jsonp连接是用点(.),并且里面的值要用括号括起来 3、处理跨域方法三——XHR2: 1、HTML5提供的XMLHttpRequest Level2已经实现了跨域访问以及其他的一些新功能 2.IE10以下的版本都不支持 只需要在服务器端加下面两行代码 header('Access-Control-Allow-Origin:*');header('Access-Control-Allow-Methods:POST,GET');    

 

更多专业前端知识,请上 【猿2048】www.mk2048.com
最新回复(0)