php如何解决跨域问题?

php如何解决跨域问题?,第1张

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: XMLHttpRequest。

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

1,在app/middleware.php中添加

中间件,这样就改成了

*是不安全的,可以在config/cookie.php配置cookie 有效域名的domain

如果接口请求发送了token,会提示Access-Control-Allow-Headers这个问题,tp6默认是这样

可以在'Access-Control-Allow-Headers' 这一样加上XXX-token,

我在搞这个时还遇见post请求变成get

把method改成了type

CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing)。我们知道,用浏览器发送 http 请求(ajax)就存在跨域的问题,现在主流的解决跨域方案就是 CORS。

这里特别强调,我们经常说的跨域只是浏览器的限制,如果我们用脚本发送请求或者通过服务器请求,都不不会有跨域问题,这其中主要原因是浏览器使用门槛非常低,为了防止别有用心的人攻击普通用户,所以引入跨域策略

CORS是 W3C 在2014年1月16日发布的一个正式推荐的通信标准,主要解决用户代理的Web应用通过Ajax或者其他机制从另一个站点访问资源、获取数据的问题。

前提: 服务端需要添加支持CORS的相关功能,即设定http的 Access-Control-Allow-Origin 允许的值

CORS的通信都由浏览器完成,不需要用户参与。默认浏览都是通过Ajax通信,如果浏览器在发送请求时监测到当前请求跨域了,就会自动转成CORS

CORS 和 Ajax 区别

CORS 和 Ajax 在发送请求时没有任何区别,都是http请求,唯一区别就是 CORS 请求时,会在 http请求头 header 中添加几个关键词,用来表示当前请求是跨域请求。

浏览器将CORS请求分成两类:简单请求和非简单请求

只要同时满足以下两大条件,就属于简单请求。

条件一:

条件二:

简单请求就是浏览器直接发送一个CORS请求(ajax请求)。发送之前,浏览器会给本次http请求添加一个请求头 Origin

上面的头信息中, Origin 字段用来说明,本次请求来自哪个源(协议 + 域名 + 端口)。服务器根据这个值,决定是否同意这次请求。

我们看一个时许图(本人开发的一个在线时序图工具 http://sizhuiit.com:9989/static/ )

非简单请求就是再发送请求前先发送一个 OPTIONS 请求,提前检测一下请求是否被允许,主要目的是为了防止跨域请求对后台数据的破坏或盗取,简单请求安全性较低,服务器是处理了请求后再返回数据,非简单请求模式下,服务器在提前检测时不应该处理请求。


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

原文地址: http://outofmemory.cn/bake/11622779.html

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

发表评论

登录后才能评论

评论列表(0条)

保存