解决跨域问题的三种方式

原创 2018年04月17日 10:07:03

什么是跨域?

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

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

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');//允许访问的方式

Moesif Origin & CORS Changer

  • 2017年09月04日 15:12
  • 228KB
  • 下载

三种方法解决跨域问题

javascript跨域访问是web开发者经常遇到的问题,什么是跨域,一个域上加载的脚本获取或操作另一个域上的文档属性,下面将列出三种实现javascript跨域方法:  1.基于iframe实...
  • andyfu57
  • andyfu57
  • 2016-05-21 12:26:11
  • 5094

java请求跨域问题解决方法

/* * response请求跨域公共设置 */ public static HttpServletResponse SetHttpServletResponse( ...
  • Mr_OOO
  • Mr_OOO
  • 2017-04-18 09:42:00
  • 1245

JSONP三种方式解决跨域问题

  • 2017年04月19日 15:53
  • 262KB
  • 下载

跨域问题及其解决办法

跨域 跨域是指一个资源请求与其不在同一个域(源)的资源,不在同一个域(源)是指两个域的协议、域名或端口不同。 同源策略 出于安全考虑,浏览器制定了同源策略, 限制了某些跨域请求。同源策略是跨...
  • ruangong1203
  • ruangong1203
  • 2017-08-25 01:24:37
  • 478

跨域访问3种解决方案

三种方法实现js跨域访问 博客分类: web前端 javascripthtmljsonp脚本    javascript跨域访问是web开发者经常遇到的问题,什么是跨域,一个域上加载的脚本...
  • ysong_summer
  • ysong_summer
  • 2017-01-19 16:39:16
  • 922

JS跨域问题以及采用JSONP方式解决跨域问题

在做项目的时候,客户要做成客户端和服务端两部分,客户端向服务端进行认证,我开始的时候没有直接替换ip地址,后来采用ip地址替换之后,出现了问题,后台可以收到访问的请求,但是无法拿到后台返回的信息,后来...
  • wangyang1354
  • wangyang1354
  • 2016-05-18 20:08:56
  • 1955

js常见跨域问题及解决方法

什么是跨域? 概念:只要协议、域名、端口有任何一个不同,都被当作是不同的域。 URL 说明 是否允许通信 http://www.a.com...
  • s164828378
  • s164828378
  • 2016-10-12 00:32:30
  • 1810

Ajax 跨域问题解决最好方案

本文通过设置Access-Control-Allow-Origin来实现跨域。 例如:客户端的域名是client.w3cschool.cc,而请求的域名是server.w3cschool.cc。 如果...
  • l1028386804
  • l1028386804
  • 2015-06-19 21:53:40
  • 2883

tomcat解决跨越问题

  • 2015年11月23日 11:59
  • 34KB
  • 下载
收藏助手
不良信息举报
您举报文章:解决跨域问题的三种方式
举报原因:
原因补充:

(最多只允许输入30个字)