跨域是指在Web开发中,浏览器出于安全考虑,限制一个网页(源)对另一个网页(源)的资源进行访问的机制。这种限制是为了防止恶意网站获取用户的敏感信息。
什么是跨域?
- 同源策略:浏览器的同源策略要求,只有当两个URL具有相同的协议、域名和端口时,它们才能相互访问。例如:
https://example.com:443/page1
和https://example.com:443/page2
是同源的。https://example.com
和http://example.com
是不同源的(协议不同)。https://example.com
和https://api.example.com
是不同源的(子域不同)。
- 跨域请求:当你尝试从一个源(例如,
https://example.com
)请求另一个源的资源(例如,https://api.example.com
)时,就会发生跨域请求。
如何保证不跨域?
如果你希望确保不发生跨域,可以采取以下措施:
- 使用同源策略:
- 确保所有的请求都来自相同的协议、域名和端口。
- 使用相对URL:
- 在请求资源时使用相对URL而不是绝对URL。例如,使用
/api/resource
而不是https://api.example.com/resource
。
- 在请求资源时使用相对URL而不是绝对URL。例如,使用
- CORS(跨源资源共享):
- 如果需要进行跨域请求,可以在服务器端设置CORS头部来允许特定的源访问资源。这样,浏览器在请求时会检查这些头部,决定是否允许请求。
- JSONP:
- 对于GET请求,可以使用JSONP(JSON with Padding)技术,它允许跨域请求,但仅限于GET请求。
- 代理服务器:
- 可以通过设置一个代理服务器来转发请求,从而避免直接进行跨域请求。客户端只与代理服务器通信,代理服务器再与目标服务器通信。
总结
跨域是Web安全的一部分,确保用户数据的安全。要避免跨域,可以通过使用同源策略、相对URL、CORS、JSONP或代理服务器等方法来实现。
保证不跨域总结就是:
跨域的判断主要依赖于协议、域名和端口的匹配。只要这三者中的任何一个不同,就会被视为跨域。路径的不同不会影响同源策略的判断。
- 相同协议 比如都是:HTTP 或 HTTPs
- 相同域名。都是:www.baidu.com
- 相同端口。都是443 或 80
直接看案例
https://www.baidu.com http://www.baidu.com 算跨域。
https://www.baidu.com https://ok.baidu.com 算跨域。
http://www.baidu.com:80 http://www.baidu.com:9999 算跨域。
https://www.baidu.com/abc https://www.baidu.com/bcd 不算跨域
特殊说明:
上述文章均是作者实际操作后产出。烦请各位,请勿直接盗用!转载记得标注原文链接:www.zanglikun.com
第三方平台不会及时更新本文最新内容。如果发现本文资料不全,可访问本人的Java博客搜索:标题关键字。以获取最新全部资料 ❤
第三方平台不会及时更新本文最新内容。如果发现本文资料不全,可访问本人的Java博客搜索:标题关键字。以获取最新全部资料 ❤