架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 7261|回复: 1

什么是跨域?跨域怎么解决?

[复制链接]
发表于 2017-7-14 18:24:37 | 显示全部楼层 |阅读模式
什么是跨域?
跨域,指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对Javascrip{过滤}t施加的安全限制。

所谓同源是指,域名,协议,端口均相同,不明白没关系,举个栗子:

http://www.itsvse.com/index.html 调用 http://www.itsvse.com/server.PHP (非跨域)

http://www.itsvse.com/index.html 调用 http://www.456.com/server.php (主域名不同:itsvse/456,跨域)

http://abc.itsvse.com/index.html 调用 http://def.itsvse.com/server.php (子域名不同:abc/def,跨域)

http://www.itsvse.com:8080/index.html 调用 http://www.itsvse.com:8081/server.php (端口不同:8080/8081,跨域)

http://www.itsvse.com/index.html 调用 https://www.itsvse.com/server.php (协议不同:http/https,跨域)

请注意:localhost和127.0.0.1虽然都指向本机,但也属于跨域。

浏览器执行javascrip{过滤}t脚本时,会检查这个脚本属于哪个页面,如果不是同源页面,就不会被执行。

解决办法:

1、JSONP:

使用方式就不赘述了,但是要注意JSONP只支持GET请求,不支持POST请求。

2、代理:

例如www.itsvse.com/index.html需要调用www.456.com/server.php,可以写一个接口www.itsvse.com/server.php,由这个接口在后端去调用www.456.com/server.php并拿到返回值,然后再返回给index.html,这就是一个代理的模式。相当于绕过了浏览器端,自然就不存在跨域问题。

3、PHP端修改header(XHR2方式)

在php接口脚本中加入以下两句即可:
header('Access-Control-Allow-Origin:*');//允许所有来源访问
header('Access-Control-Allow-Method:POST,GET');//允许访问的方式





上一篇:win10 "php-cgi.exe - FastCGI 进程意外退出" 解决办法
下一篇:鸭梨小程序首席体验官:300秒带你看透小程序大世界
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2017-7-15 09:00:43 | 显示全部楼层
CORS(跨域资源共享,Cross-Origin Resource Sharing)
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2024-5-4 04:00

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表