我记得以前跨域用jsonp,但是不是有个cors 那个方式更简单才对,怎么jsonp还会流行
时间: 2023-07-12 15:05:18 浏览: 48
跨域请求有多种方式,其中JSONP是一种比较老的技术,它利用了script标签不受同源策略限制的特性来实现跨域请求。但是它也存在一些问题,比如只支持GET请求,不支持POST等,而且容易受到XSS攻击。而CORS(Cross-Origin Resource Sharing)是一种比较新的技术,它通过在服务器端设置允许跨域访问的响应头来实现跨域请求。相比JSONP,CORS更加安全、灵活,支持各种类型的HTTP请求。但是在某些情况下,比如要兼容一些老的浏览器或者服务器不支持CORS时,JSONP仍然是一种很好的选择。所以说,JSONP虽然不如CORS优秀,但在某些特定的场景下仍然有其存在的价值。
相关问题
使用vue-jsonp还会cors
跨域资源共享(CORS)是浏览器的一种安全策略,用于限制跨域请求。而vue-jsonp是一种跨域请求的解决方案,它通过动态创建script标签,利用浏览器对script标签的跨域请求不受限制的特性,来实现跨域请求。因此,使用vue-jsonp可以避免CORS的限制。
如何使用JSONP等技术来避免CORS限制。
使用JSONP可以通过在请求中添加一个回调函数来绕过CORS限制。JSONP的原理是利用`<script>`标签可以跨域请求资源的特性。具体步骤如下:
1. 在客户端,创建一个`<script>`标签,并将其`src`属性设置为要请求的URL,同时在URL中添加一个回调函数的参数,例如`callback=handleResponse`。
2. 服务器端接收到请求后,将数据包装在回调函数中返回,例如返回`handleResponse({"name": "John", "age": 30})`。
3. 客户端接收到响应后,会自动执行回调函数,从而获取到服务器端返回的数据。
需要注意的是,使用JSONP需要服务器端支持,即将数据包装在回调函数中返回。而且JSONP只能用于GET请求,不支持POST等其他请求方法。此外,JSONP也存在一些安全风险,因为回调函数名是在URL中传递的,容易被注入恶意代码,因此需要特别谨慎。