• 欢迎访问故纵博客网,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站兼容其他浏览器.
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏极客公园吧

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

javascript wyoq 1个月前 (09-11) 50次浏览 未收录 0个评论

什么是跨域?

跨域,指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器施加的安全限制。

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

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

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

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

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

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

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

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

解决办法:

1、JSONP:

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

2、代理:

例如 www.123.com/index.html 需要调用 www.456.com/server.php,可以写一个接口 www.123.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’);//允许访问的方式


故纵博客 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:什么是跨域?怎么解决跨域问题?
喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址