TA的每日心情 | 衰 3 天前 |
---|
签到天数: 1646 天 [LV.Master]伴坛终老
|
一、nginx跨域
1 . 什么是跨域?
跨源资源共享(CORS)是一种机制,它使用额外的HTTP标头让用户代理获得访问来自不同来域的服务器上选定资源的权限,而不是使用当前正在使用的站点。用户代理在请求来自与当前文档不同的域,协议或端口的资源时,会发出跨源HTTP请求。
2 . 产生跨域的原因?
1、出于安全原因,浏览器限制从脚本内发起的跨域HTTP请求。例如,XMLHttpRequest与提取API遵循同域策略。这意味着使用这些API的Web应用程序只能从加载应用程序的同一个域请求HTTP资源,除非使用CORS头文件。
2、浏览器为了安全问题一般都限制了跨域访问,也就是不允许跨域请求资源
3、同ip (或domain),同端口,同协议视为同一个域,一个域内的脚本仅仅具有本域内的权限,可以理解为本域脚本只能读写本域内的资源,而无法访问其它域的资源。这种安全限制称为同源策略
4、现代浏览器在安全性和可用性之间选择了一个平衡点。在遵循同源策略的基础上,选择性地为同源策略“开放了后门”。例如img script style等标签,都允许垮域引用资源,然而,你也只能是引用这些资源而已,并不能读取这些资源的内容
浏览器处于安全考虑,会通过同源策略禁止网页发起跨域的http请求。
同源策略: URL由协议、域名、端口和路径组成,如果两个URL的协议、域名和端口相同,则表示它们同源。
3 . 同域策略的限制
Cookie,LocalStorage和IndexDB无法读取
DOM和js对象无法获取
AJAX请求无法发送
4 . 常见的跨域场景
5 . 跨域的解决方案
通过jsonp跨域
document.domain + iframe跨域
location.hash + iframe
window.name + iframe跨域
postMessage跨域
跨域资源共享(CORS)
nginx代理跨域
nodejs中间件代理跨域
WebSocket协议跨域
|
|