- 协议(Protocol): 比如
http
或https
。 - 域名(Domain): 比如
example.com
。 - 端口号(Port): 比如
80
或8080
。
如果以上任何一个部分不一致,就会产生跨域问题,导致浏览器阻止请求,从而限制了跨域请求获取对应资源的能力。
跨域示例:
- 不同协议: 从
http://example.com
中加载资源去请求https://example.com
。 - 不同域名: 从
http://example.com
中加载资源去请求http://api.example.net
。 - 不同端口: 从
http://example.com:3000
中加载资源去请求http://example.com:4000
。
解决跨域问题的方法:
- CORS(跨域资源共享): 在服务端设置响应头部信息,允许指定源的请求访问资源。
- JSONP(JSON with Padding): 利用
<script>
标签的 src 属性不受同源策略限制的特点,从其他域动态获取数据。 - 代理: 在同域下设置代理服务器来转发请求,绕过同源策略。
- iframe: 使用
<iframe>
来加载其他源的页面,并与父页面进行通信。 - WebSocket: 可以在不受同源策略限制下与其他源进行实时通信。
跨域问题在前端开发中是一个常见且重要的问题,解决方法需要根据具体情况来选择和实施。