您的位置:首页 > Web前端

前端对于跨域的解决办法

2020-07-14 06:08 155 查看

如何解决跨域问题?
跨域: jsonp、 iframe、window.name、window.postMessage、服务器上设置代理页面
  (1) document.domain+iframe
  (2) 动态创建script标签
怎么解决跨域?(后台写请求头,前端处理ajax请求)
理解跨域的概念:(指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对JavaScript施加的安全限制所谓同源是指,域名,协议,端口均相同)

理解跨域的概念:协议、域名、端口都相同才同域,否则都是跨域 出于安全考虑,服务器不允许 ajax 跨域获取数据,但是可以跨域获取文件内容,所以基于这一点,可以动态创建 script 标签,使用标签的 src 属性访问 js 文件的形式获取 js 脚本,并且这个 js 脚本中的内容是函数调用,该函数调用的参数是服务器返回的数据,为 了获取这里的参数数据,需要事先在页面中定义回调函数,在回调函数中处理服务器返回的
数据,这就是解决跨域问题的主流解决方案 

a、JSONP:
要注意JSONP只支持GET请求,不支持POST请求。最关键的是,服务端也要拼接一下回调函数;
b、代理:
例如www.123.com/index.html需要调用www.456.com/server.php,可以写一个接口www.123.com/server.php,由这个接口在后端去调用www.456.com/server.php并拿到返回值,然后再返回给index.html,这就是一个代理的模式。相当于绕过了浏览器端,自然就不存在跨域问题。
c、PHP端修改header(XHR2方式)
在php接口脚本中加入以下两句即可:
header('Access-Control-Allow-Origin:*');//允许所有来源访问
header('Access-Control-Allow-Method:POST,GET');//允许访问的方式 ,./
 

转载于:https://my.oschina.net/u/3716769/blog/1557379

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: