Web浏览器工作原理
同源策略与跨域问题
重要程度:7 分
<h2>同源策略</h2>
<p>同源策略是一种安全机制,用于限制一个源(协议、域名、端口)的文档或脚本如何与另一个源的资源进行交互。它主要应用于浏览器环境中,以防止恶意网站窃取用户数据。</p>
<h3>定义:</h3>
<ul>
<li>协议相同 (例如:http: 和 https:)</li>
<li>域名相同 (例如:www.example.com 和 example.com)</li>
<li>端口相同 (例如:80 和 8080)</li>
</ul>
<h3>作用:</h3>
<p>同源策略可以防止恶意网站读取或修改其他网站的数据,从而保护用户的隐私和数据安全。</p>
<h2>跨域问题</h2>
<p>当两个源不满足同源策略时,就会产生跨域问题。在浏览器中,通常会阻止从一个源加载的脚本去访问另一个源的数据。</p>
<h3>示例:</h3>
<pre>
假设有一个网页位于:
URL1: http://example.com/index.html
该网页试图通过XMLHttpRequest请求另一个URL:
URL2: http://api.example.com/data.json
URL1和URL2的比较:
- 协议相同 (http)
- 域名不同 (example.com vs api.example.com)
- 端口相同 (默认为80)
由于域名不同,因此URL1和URL2不是同源的,这将导致跨域问题。
</pre>
<h3>解决方法:</h3>
<ul>
<li><strong>CORS (Cross-Origin Resource Sharing)</strong>:服务器可以通过设置响应头来允许特定源的跨域请求。</li>
<li><strong>JSONP (JSON with Padding)</strong>:通过动态创建script标签,利用script标签不受同源策略限制的特点,来实现跨域数据获取。</li>
</ul>