CORS(跨源资源共享)和JSONP(JSON with Padding)都是用于解决跨源请求问题的技术,但它们的工作原理和应用场景有所不同。
CORS
CORS是一种更现代的跨源请求解决方案,它允许服务器指定哪些外部域(或域段)可以访问它的资源。CORS通常用于Ajax请求。
特点:
- 安全性高:CORS请求需要服务器明确允许,防止恶意网站发起请求。
- 支持范围广:现代浏览器和服务器都支持CORS。
- 配置灵活:服务器可以控制哪些HTTP方法和头部信息可以被跨源请求访问。
示例:
// 服务器响应头
Access-Control-Allow-Origin: https://example.com
Access-Control-Allow-Methods: GET, POST
Access-Control-Allow-Headers: Content-Type
JSONP
JSONP是一种更古老的跨源请求解决方案,它通过动态创建<script>
标签来实现。
特点:
- 只支持GET请求:JSONP不支持POST请求。
- 简单易用:实现简单,易于理解和实现。
- 安全性较低:容易受到XSS攻击。
示例:
<script src="https://example.com/data?callback=jsonpCallback"></script>
<script>
function jsonpCallback(data) {
console.log(data);
}
</script>
对比
特点 | CORS | JSONP |
---|---|---|
安全性 | 高 | 低 |
支持的请求类型 | 多种 | GET |
配置 | 复杂 | 简单 |
支持范围 | 广泛 | 较窄 |
总结
CORS是更现代、更安全的跨源请求解决方案,而JSONP则是一种简单易用的方法。在实际应用中,应根据具体需求和场景选择合适的技术。
图片
跨域请求示例
JSONP示例