好得很程序员自学网
  • 首页
  • 后端语言
    • C#
    • PHP
    • Python
    • java
    • Golang
    • ASP.NET
  • 前端开发
    • Angular
    • react框架
    • LayUi开发
    • javascript
    • HTML与HTML5
    • CSS与CSS3
    • jQuery
    • Bootstrap
    • NodeJS
    • Vue与小程序技术
    • Photoshop
  • 数据库技术
    • MSSQL
    • MYSQL
    • Redis
    • MongoDB
    • Oracle
    • PostgreSQL
    • Sqlite
    • 数据库基础
    • 数据库排错
  • CMS系统
    • HDHCMS
    • WordPress
    • Dedecms
    • PhpCms
    • 帝国CMS
    • ThinkPHP
    • Discuz
    • ZBlog
    • ECSHOP
  • 高手进阶
    • Android技术
    • 正则表达式
    • 数据结构与算法
  • 系统运维
    • Windows
    • apache
    • 服务器排错
    • 网站安全
    • nginx
    • linux系统
    • MacOS
  • 学习教程
    • 前端脚本教程
    • HTML与CSS 教程
    • 脚本语言教程
    • 数据库教程
    • 应用系统教程
  • 新技术
  • 编程导航
    • 区块链
    • IT资讯
    • 设计灵感
    • 建站资源
    • 开发团队
    • 程序社区
    • 图标图库
    • 图形动效
    • IDE环境
    • 在线工具
    • 调试测试
    • Node开发
    • 游戏框架
    • CSS库
    • Jquery插件
    • Js插件
    • Web框架
    • 移动端框架
    • 模块管理
    • 开发社区
    • 在线课堂
    • 框架类库
    • 项目托管
    • 云服务

当前位置:首页>后端语言>PHP
<tfoot draggable='sEl'></tfoot>

cors方案php coep方案用法

很多站长朋友们都不太清楚cors方案php,今天小编就来给大家整理cors方案php,希望对各位有所帮助,具体内容如下:

本文目录一览: 1、 thinkphp6解决 CORS 跨域 2、 CORS详解 3、 php如何解决跨域问题? 4、 使用CORS解决跨域问题 thinkphp6解决 CORS 跨域

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详解

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 字段用来说明,本次请求来自哪个源(协议 + 域名 + 端口)。服务器根据这个值,决定是否同意这次请求。

我们看一个时许图(本人开发的一个在线时序图工具 )

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

php如何解决跨域问题?

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。

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

使用CORS解决跨域问题

跨域是指跨域名的访问,以下情况都属于跨域:

如果 域名和端口都相同,但是请求路径不同 ,不属于跨域,如:

跨域不一定会有跨域问题。

因为跨域问题是浏览器对于ajax请求的一种安全限制: 一个页面发起的ajax请求,只能是于当前页同域名的路径 ,这能有效的阻止跨站攻击。

因此: 跨域问题 是针对ajax的一种限制 。

但是这却给我们的开发带来了不变,而且在实际生成环境中,肯定会有很多台服务器之间交互,地址和端口都可能不同,怎么办?

目前比较常用的跨域解决方案有3种:

我们这里会采用cors的跨域方案。

CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing)。

它允许浏览器向跨源服务器,发出 XMLHttpRequest 请求,从而克服了AJAX只能 同源 使用的限制。

CORS需要浏览器和服务器同时支持。目前,所有浏览器都支持该功能,IE浏览器不能低于IE10。

浏览器会将ajax请求分为两类,其处理方案略有差异:简单请求、特殊请求。

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

(1) 请求方法是以下三种方法之一:

(2)HTTP的头信息不超出以下几种字段:

当浏览器发现发现的ajax请求是简单请求时,会在请求头中携带一个字段: Origin .

Origin中会指出当前请求属于哪个域(协议+域名+端口)。服务会根据这个值决定是否允许其跨域。

如果服务器允许跨域,需要在返回的响应头中携带下面信息:

注意:

如果跨域请求要想操作cookie,需要满足3个条件:

不符合简单请求的条件,会被浏览器判定为特殊请求,,例如请求方式为PUT。

特殊请求会在正式通信之前,增加一次HTTP查询请求,称为"预检"请求(preflight)。

浏览器先询问服务器,当前网页所在的域名是否在服务器的许可名单之中,以及可以使用哪些HTTP动词和头信息字段。只有得到肯定答复,浏览器才会发出正式的 XMLHttpRequest 请求,否则就报错。

一个“预检”请求的样板:

与简单请求相比,除了Origin以外,多了两个头:

服务的收到预检请求,如果许可跨域,会发出响应:

除了 Access-Control-Allow-Origin 和 Access-Control-Allow-Credentials 以外,这里又额外多出3个头:

如果浏览器得到上述响应,则认定为可以跨域,后续就跟简单请求的处理是一样的了。

虽然原理比较复杂,但是前面说过:

事实上,SpringMVC已经帮我们写好了CORS的跨域过滤器:CorsFilter ,内部已经实现了刚才所讲的判定逻辑,我们直接用就好了。

在 Application 下编写一个配置类,并且注册CorsFilter:

结构:

放到Application下即可。

4.5.4.重启测试:

访问正常:

关于cors方案php的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。

查看更多关于cors方案php coep方案用法的详细内容...

声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did195937
更新时间:2023-04-26   阅读:29次

上一篇: php轮询支付结果 php轮询请求接口

下一篇:php-fpm缓存 php常用缓存技术介绍

最新资料更新

  • 1.php课堂系统 php网课系统
  • 2.php项目任务分配 php任务调度框架
  • 3.php网站依赖 php运行网址
  • 4.form居中显示php form居中显示
  • 5.php每个小时执行 php定时执行每天执行一次
  • 6.php合并特殊字符 php合并单元格的代码
  • 7.php图片上传及显示 php 图片上传
  • 8.php接收xml异常 php处理xml数据
  • 9.php事务的隔离级别 php事务处理
  • 10.修改文件限制php php修改上传文件大小
  • 11.php开发宝典 php7开发宝典pdf下载
  • 12.php每天更新数据 php数据库更新语句
  • 13.php的特点有. 简述什么是php?php的主要特点有哪些?
  • 14.php时间戳转换字符串 php 时间戳转日期
  • 15.php网站+iis php网站有哪些
  • 16.php区xml文件 php处理xml数据
  • 17.vip影院php后台版 vip影视电视剧电影
  • 18.phpajax日历 php如何生成一年的日历
  • 19.php下载表格 php下载功能
  • 20.php判断字符串的编码 php 判断字符串是否存在某个字符串

CopyRight:2016-2025好得很程序员自学网 备案ICP:湘ICP备09009000号-16 http://www.haodehen.cn
本站资讯不构成任何建议,仅限于个人分享,参考须谨慎!
本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。
本网站刊载的所有内容(包括但不仅限文字、图片、LOGO、音频、视频、软件、程序等)版权归原作者所有。任何单位或个人认为本网站中的内容可能涉嫌侵犯其知识产权或存在不实内容时,请及时通知本站,予以删除。

网站内容来源于网络分享,如有侵权发邮箱到:kenbest@126.com,收到邮件我们会即时下线处理。
网站框架支持:HDHCMS   51LA统计 百度统计
Copyright © 2018-2025 「好得很程序员自学网」
[ SiteMap ]