美文网首页
同源政策与跨域请求

同源政策与跨域请求

作者: 闲睡猫 | 来源:发表于2020-02-08 11:50 被阅读0次

同源政策

1995年,同源政策由 Netscape(网景) 公司引入浏览器。目前,所有浏览器都实行这个政策。

最初,它的含义是指,A 网页设置的 Cookie,B 网页不能打开,除非这两个网页同源。所谓同源指的是三个相同。

  • 协议相同(http https)

  • 域名相同

  • 端口相同(默认80端口)

随着互联网的发展,同源政策越来越严格,目前非同源的站点发出请求会受到以下限制

  • Cookie无法读取。

  • DOM 无法获得。

  • JAX 请求无效(可以发送,但浏览器会拒绝接受响应)

跨域请求

违反了同源政策,就属于跨域请求

新建 index.html

<script>
    var xhr = new XMLHttpRequest();
    xhr.open('get', 'http://local.b.com');
    res = xhr.send();
</script>

服务端的响应 index.php

echo "汝何人?敢入我室";
image

这种情况下,请求依然是有发出到服务端的,可以从网络请求中看到,但客户端无法获取相应的数据

image

用代理的方式

$host = 'local.b.com';
$url = 'http://local.b.com/index.php';
$ip = '127.0.0.1';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, str_replace($host, $ip, $url));
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Host: {$host}"));
curl_setopt($ch,CURLOPT_TIMEOUT,5);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
$html = curl_exec($ch);
curl_close($ch);
echo $html;

此时,控制台就不会有报错信息了

这种方式肯定是不可持续的,多了个中间商的环节,平添了许多成本

最好的方式当然是直接对话,此时就需要让客户端携带一个标识,服务端检测到标识后放行

cors

header('Access-Control-Allow-Origin:*');
echo "谁都可以进来";

开放给所有人

这样显然不安全,可以指定某个网站

$allow = [
    'http://local.a.com',
    'http://local.c.com',
];

// 获取来访域名
$domain = $_SERVER['HTTP_ORIGIN'];
if (in_array($domain, $allow)) {
    header('Access-Control-Allow-Origin:' . $domain);
} 
echo "你被翻牌了,今晚就留下吧...";

原文链接

相关文章

  • 同源政策与跨域请求

    同源政策 1995年,同源政策由 Netscape(网景) 公司引入浏览器。目前,所有浏览器都实行这个政策。 最初...

  • 浏览器同源策略与ajax跨域方法汇总

    本文先简要介绍前端开发中的浏览器同源政策;然后在跨域问题中,具体介绍跨域ajax请求的应用场景与实现方案。 什么是...

  • 网站跨域解决方法

    关键词 同源策略 什么是跨域 跨域,请求不同源。同源指协议、域名、端口都相同,只要有一样不相同就是跨域了。 同源限...

  • JSONP、CORS、跨域

    跨域 同源:两个文档同源需满足:协议、域名、端口相同跨域:不同域之间相互请求资源,就算作“跨域“。js进行DOM操...

  • jsonp

    参考:轻松搞定JSONP跨域请求参考:JavaScript 跨域总结与解决办法要理解跨域,先要了解一下“同源策略”...

  • SpringBoot2.x整合CORS解决跨域问题

    跨域问题系列文章 1. 同源策略与CORS(跨域请求的起源)2. SpringBoot2.x整合CORS解决跨域问...

  • 有关跨域的相关问题和方法

    跨域是什么 同源策略 在讲解什么是跨域之前先要清楚什么是同源策略,“同源政策”(same-origin polic...

  • 前端开发的跨域问题

    跨域背景 跨域是由于浏览器的同源策略引起的;那么什么是同源策略呢?同源策略是指页面请求的接口地址必须与 url 地...

  • 跨域与CORS

    1. 跨域问题、同源请求和跨域请求 简单来说,就是前台调用后台接口的时候,由于「浏览器」的同源策略 (Same-o...

  • JSONP跨域请求的小尝试

    众所周知,为了安全性考虑浏览器是不支持跨域请求的,哪些请求是跨域请求?什么是跨域请求总之,同源是指 协议、域名、端...

网友评论

      本文标题:同源政策与跨域请求

      本文链接:https://www.haomeiwen.com/subject/qqfixhtx.html