Http 跨域(Cors) 详解

Http 跨域(Cors) 详解,第1张

1浏览器从一个域名的网页去请求另一个域名的资源时,域名、端口、协议任一不同,都是跨域
2只要协议、域名、端口有任何一个不同,都被当作是不同的域,之间的请求就是跨域 *** 作。

协议>

PHP 跨域问题的解决方法常见有以下几种:

使用 JSONP:通过动态创建 script 标签的方式,可以实现从不同的域名请求数据。

使用 CORS(跨域资源共享):通过在服务端设置 Access-Control-Allow-Origin 响应头,来允许特定域名请求数据。

使用代理:通过代理服务器请求数据,避免了跨域问题。

使用 Nginx 反向代理:通过配置 Nginx 反向代理,来实现跨域请求。

以下是使用 CORS 通过添加响应头来解决跨域问题的一个例子:

// 设置允许来自任何域名的请求

header("Access-Control-Allow-Origin: ");

// 设置允许请求方法(例如GET、POST等)

header("Access-Control-Allow-Methods: GET, POST, PUT, DELETE");

// 设置允许请求头

header("Access-Control-Allow-Headers: X-Requested-With, Content-Type");

// 如果请求是通过 AJAX 发起的,还需要在请求头中添加 X-Requested-With: XML>

如果对你有所帮助,就点个赞再走吧~

浏览器出于安全方面的考虑,只允许客户端与本域(同协议、同域名、同端口,三者缺一不可)下的接口交互。不同源的客户端脚本在没有明确授权的情况下,不能读写对方的资源,这被称为同源策略。

而有时候,我们不得不在一个客户端下访问不同域中的资源,于是需要用到一些方法来避开浏览器的同源策略,这些方法被称为跨域。
实现跨域有如下几种方法:

JSONP(JSON with Padding)是数据格式JSON的一种使用模式,可以使网页实现跨域请求。其原理主要利用了 HTML 的 script 标签。由于 script 是采用开放策略,通过设置 src 引入不同域下的资源,所以可以通过 script 实现跨域,该方法需要后端支持。jsonp跨域的实现步骤如下:

下面来做个演示,首先为演示方便,将系统的hosts做如下修改:

以上例子最终实现了由exampleacom到examplebcom的跨域。应注意的是,因为 <script> 只能发送GET请求,所以jsonp只能实现GET请求的跨域。如果希望能实现其他请求的跨域,就可以用接下来介绍的一种方法——CORS。

CORS(全称为:Cross-Origin Resouce Sharing)跨域资源共享,是一种通过ajax跨域请求资源的方法。浏览器将CORS请求分为两大类,简单请求(simple request)和非简单请求(not-so-simple request,浏览器对这两种请求的处理方式不一样。如果请求满足以下两个条件,则为简单请求。

简单请求的实现方式即当用XML>本文主要介绍服务端设置跨域的方式。

设置了具体的域名地址之后,只有指定地址才可访问B站点的设置如下:

访问A站点的时候设置一个cookie,然后从A站点去访问B站点,查看是否会携带A站点的cookie


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/12951204.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-29
下一篇 2023-05-29

发表评论

登录后才能评论

评论列表(0条)

保存