ajax同源政策和解决同源政策的方法和模拟封装jsonp函数和CORS跨域共享和服务端代理
    		       		warning:
    		            这篇文章距离上次修改已过432天,其中的内容可能已经有所变动。
    		        
        		                
                同源策略是一种安全机制,它限制了一个源的文档或脚本如何与另一个源的资源进行交互。这里的源指的是协议、域名和端口号的组合。
Ajax同源策略: 当你尝试通过Ajax从一个源(域)向另一个源发起请求时,浏览器会阻止这种请求,除非目标源明确允许。
解决同源策略的方法:
- JSONP: 使用<script>标签发起请求,而不是XHR,并定义一个回调函数来处理响应。
- CORS: 服务器可以设置Access-Control-Allow-Origin响应头来允许特定的外部域访问资源。
- 代理服务器: 在服务器端设置代理,使用服务器作为中介来请求目标源的资源,然后再将数据返回给客户端。
模拟封装JSONP函数:
function jsonp(url, callbackName, callback) {
  const script = document.createElement('script');
  window[callbackName] = function(data) {
    callback(data);
    document.body.removeChild(script);
  };
  script.src = `${url}?callback=${callbackName}`;
  document.body.appendChild(script);
}
 
// 使用方法
jsonp('https://example.com/api', 'myCallback', function(data) {
  console.log(data);
});CORS跨域共享设置:
服务器端需要在响应头中设置Access-Control-Allow-Origin,例如:
Access-Control-Allow-Origin: https://example.com服务端代码示例:
<?php
header("Access-Control-Allow-Origin: *"); // 允许所有域名
header("Access-Control-Allow-Methods: GET, POST");
?>以上代码展示了如何在服务器端设置CORS,以及如何封装一个JSONP函数用于解决Ajax请求的同源问题。
评论已关闭