跨域是指在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)时,就会发生跨域请求。

如何保证不跨域?

如果你希望确保不发生跨域,可以采取以下措施:

  1. 使用同源策略
    • 确保所有的请求都来自相同的协议、域名和端口。
  2. 使用相对URL
    • 在请求资源时使用相对URL而不是绝对URL。例如,使用 /api/resource 而不是 https://api.example.com/resource
  3. CORS(跨源资源共享)
    • 如果需要进行跨域请求,可以在服务器端设置CORS头部来允许特定的源访问资源。这样,浏览器在请求时会检查这些头部,决定是否允许请求。
  4. JSONP
    • 对于GET请求,可以使用JSONP(JSON with Padding)技术,它允许跨域请求,但仅限于GET请求。
  5. 代理服务器
    • 可以通过设置一个代理服务器来转发请求,从而避免直接进行跨域请求。客户端只与代理服务器通信,代理服务器再与目标服务器通信。

总结

跨域是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博客搜索:标题关键字。以获取最新全部资料 ❤