首页 > 编程语言 >thinkPhp跨域topthink/think-cors

thinkPhp跨域topthink/think-cors

时间:2024-07-23 12:17:40浏览次数:16  
标签:跨域 示例 配置 thinkphp allowed thinkPhp think cn

composer require topthink/think-cors

ThinkPHP跨域扩展

安装

composer require topthink/think-cors

配置

配置文件位于 config/cors.php

[
    'paths' => ['api/*'],
    ...
]

paths 配置示例

允许 api 目录下的跨域请求,* 代表通配符。

[
    'paths' => ['api/*']
]

 

当项目有多个域名时,支持为不同域名配置不同的目录。

[
    'paths' => [
        'www.thinkphp.cn' => ['api/*'],
        'doc.thinkphp.cn' => ['user/*', 'article/*'],
    ]
]

 

allowed_origins 配置示例

当配置中有 * 时,代表不限制来源域。

[
    'allowed_origins' => ['*'],
]

 

当我们需要限制来源域时,可以这么写。

[
    'allowed_origins' => ['www.thinkphp.cn', 'm.thinkphp.cn'],
]

 

allowed_origins_patterns 配置示例

除了固定来源域,有时候我们还想要允许不固定但有规则的来源域,那么可以通过正则来实现。例如这里我们允许 thinkphp.cn 的所有二级域。

[
    'allowed_origins_patterns' => ['#.*\.thinkphp\.cn#'],
]

 

allowed_methods 配置示例

当配置中有 * 时,代表不限制来源请求方式。

[
    'allowed_methods' => ['*'],
]

 

当然我们也可以限制只允许 GET 和 POST 的跨域请求。

[
    'allowed_methods' => ['GET', 'POST'],
]

 

allowed_headers 配置示例

当配置中有 * 时,代表不限制请求头。

[
    'allowed_headers' => ['*'],
]

 

当然我们也可以只允许跨域请求只传递给我们部分请求头。

[
    'allowed_headers' => ['X-Custom-Header', 'Upgrade-Insecure-Requests'],
]

 

max_age 配置示例

跨域预检结果是有缓存的,如果值为 -1,表示禁用缓存,则每次请求前都需要使用 OPTIONS 预检请求。如果想减少 OPTIONS 预检请求,我们可以把缓存有效期设置长些。 列如这里,我们把有效期设置为 2 小时(7200 秒):

[
    'max_age' => 7200,
]

 

supports_credentials 配置示例

Credentials 可以是 cookiesauthorization headers 或 TLS client certificates。当接口需要这些信息时,开启该项配置后,相关请求将会携带 Credentials 信息(如果有的话)。

 

[
    'supports_credentials' => true,
]

 

标签:跨域,示例,配置,thinkphp,allowed,thinkPhp,think,cn
From: https://www.cnblogs.com/smilevv/p/18318051

相关文章

  • thinkPHP/fastAdmin框架使用memcached缓存
    1.安装memcached扩展: 2.重启PHP,在thinkPHP或者fastAdmin启用扩展(开放相应端口:例如11211) 在fastAdmin中,则需修改config.php里面的cache配置: 3.实际运行测试:  第一个信息正常显示说明运行成功,第二个显示false,说明缓存删除成功......
  • thinkphp Nginx伪静态
    过滤api前缀location/{add_headerAccess-Control-Allow-Origin*;add_headerAccess-Control-Allow-Methods'GET,POST,OPTIONS';add_headerAccess-Control-Allow-Headers'DNT,Keep-Alive,User-Agent,Cache-Control,Content-Type,Authorization';......
  • vue如何解决跨域?
    在Vue.js项目中,当你的前端应用尝试从与自身不同源的服务器(协议、域名、端口中的任一不同)加载资源时,可能会遇到跨域(CORS,Cross-OriginResourceSharing)问题。以下是一些解决Vue.js项目中跨域问题的方法:1. 使用代理服务器在开发环境中,你可以通过配置VueCLI的vue.config.js......
  • thinkphp数据库配置文件在哪里?怎么修改?
    thinkphp数据库配置文件tp3.2是config.phptp5是database.php<?phpreturnarray('DB_TYPE'=>'mysql',//数据库类型'DB_HOST'=>'127.0.0.1',//数据库服务器地址'DB_NAME'=>'thinkphp',//数据库名称......
  • SpringBoot 跨域请求处理全攻略:从原理到实践
    文章目录SpringBoot如何处理跨域请求?你能说出几种方法?跨域请求概述跨域解决方案1.使用@CrossOrigin注解2.使用WebMvcConfigurer配置类3.使用过滤器(Filter)4.使用SpringSecurity处理CORS5.使用SpringCloudGateway处理CORS补充1.预检请求(PreflightRequests)2.其......
  • 你是如何解决go语言框架 gin跨域问题 的 ?
    我们在做前后端分离的项目,时常会听到跨域问题。经常看到有人的文章标题写着:前端支持跨域,但显然也只是个噱头而已。跨域的概念,本人才疏学浅,就不多说了。大家有兴趣可以搜搜相关的介绍。今天就聊一聊在go的web框架gin里面怎么解决跨域问题,以及在实践过程中踩的坑。大概已经抄了m......
  • thinkphp或laravel连接sql server 2014数据库
    问题描述:平时使用最多为mysql数据库,目前有项目数据库为sqlserver2014,列出连接全过程1.配置thinkphp或laravel的config/database.php文件后,配置sql对应的配置如下:'sqlsrv'=>['driver'=>'sqlsrv','host'=>'localhost','port'=>......
  • 报错\corelibrary\think\cache\driver\File.php
    这个错误通常发生在尝试使用 unserialize() 函数反序列化一个存储的缓存数据时,但提供的缓存数据无法被正确解析。在 \core\library\think\cache\driver\File.php 文件的第117行左右,框架尝试从文件中读取缓存数据并反序列化它。以下是一些可能的解决方案:检查缓存文件内容:首......
  • SQL Thinking
    s2下半年我在内部有一次部门级别的技术分享会,以本文内容分享为主。其实有很多人问过我相同的问题,遇到需要改写的慢sql,不知道怎么改,改好了以后也不知道等不等价?不等价了也不知道错在哪?这个要怎么破?其实都是因为绝大多数人没有做过开发,看不懂sql,不会写sql,没有sql思维,下面通过几个......
  • thinkPHP+swoole扩展搭建一个websocket连接聊天室(简易版)
    1.服务器搭建好宝塔面板,并开放用于连接websocket的端口:例如9502 2.本地准备好连接的文件,以thinkPHP举例:(1)根目录下的Websocket.php文件(2)前端index入口文件添加test()方法,然后在view目录里添加相应的test.html  test()方法: test.html:  3.打开宝塔面板,放行9502......