当前位置: 首页 > news >正文

workerman下的webman路由浏览器跨域的一种问题

软件版本

"php": ">=7.2",
"workerman/webman-framework": "^1.5.0",

问题情景

  • 使用“分组路由”做API接口
  • 前后端分离跨域,在接口测试工具调试是能正常获取数据的;但在网页浏览器上调试就遇到了CORS、404的错误(No ‘Access-Control-Allow-Origin’ header is present on the requested resource);

服务器的错误的路由代码如下:

Route::group('/w', function () {Route::post('/v/list', [myapp\app\a\Wa::class, 'getList'])->name('w.list');
})->middleware([// 中间键就用官方文档里的“跨域部分的代码” // https://www.workerman.net/doc/webman/middleware.html \app\middleware\AccessControlTest::class,
]);

API测试工具访问接口完全正确,……但浏览器无法访问。困惑我一天,一直以为问题在中间件的配置上出了问题,找之前运行成功项目的中间件代码、中间件配置,完全一样但还是访问不了~~

解决

找了诸多资料之后,发现可能路由的写法不正确;正确运行的代码如下:

Route::group('/w', function () {Route::any('/v/list', [myapp\app\a\Wa::class, 'getList'])->name('w.list');
})->middleware([// 中间键就用官方文档里的“跨域部分的代码” // https://www.workerman.net/doc/webman/middleware.html \app\middleware\AccessControlTest::class,
]);//找到不同了吗?// 无法访问的路由
Route::post('/v/list', [myapp\app\a\Wa::class, 'getList'])->name('w.list');
//正确访问的路由
Route::any('/v/list', [myapp\app\a\Wa::class, 'getList'])->name('w.list');

我猜:
Route::post()不支持浏览器的“预检”
Route::any()支持浏览器的“预检”

http://www.lryc.cn/news/425011.html

相关文章:

  • Windows11 -MASKRCNN-部署测试
  • 函数(子程序)的常见、易混淆概念详解【对初学者有帮助】
  • TiDB-从0到1-DM工具
  • AppScan——Web 应用安全扫描的得力工具
  • 虚幻5|AI行为树,进阶篇
  • 在 Spring Boot 中配置 Tomcat 监听多个端口
  • stm32f407新建项目工程及烧录
  • c++中加不加const的值传递和引用传递的区别
  • Qt的窗口设置
  • 51单片机-LCD1602显示屏
  • 多模态分析代理 MAIA:多智能体解决 视觉模型 黑盒问题
  • AT360-6T杭州中科微单频高精度授时模块场景应用
  • Python酷库之旅-第三方库Pandas(081)
  • C语言基础⑩——构造类型(结构体)
  • 宝兰德荣获openEuler项目群青铜捐赠人称号,共筑开源生态繁荣新篇章
  • 【Python单元测试】学习笔记3
  • OpenSSL源码编译及Debug
  • go之goburrow/modbus 学习
  • 开放词汇目标检测(Open-Vocabulary Object Detection, OVOD)算法是什么?
  • 【教程】Ubuntu给pycharm添加侧边栏快捷方式
  • 三个月外贸小白好迷茫,该何去何从?
  • MySQL数据库——基本查询(Create)
  • spring-security-1-快速入门
  • 5 大场景上手通义灵码企业知识库 RAG
  • 免费远程控制电脑的软件有哪些?
  • Linux软件包yum
  • 网页的切换与嵌套
  • 基于飞桨框架的稀疏计算使用指南
  • 启明云端WT32C3-S6物联网模块,乐鑫ESP32-C3芯片技术应用
  • 超越流水线,企业研发规范落地新思路