基于laravel cors 跨站解决

news/2025/2/24 0:29:22/文章来源:https://www.cnblogs.com/yansunda/p/18566901

终于解决了困扰了两天的问题:

需求:

基于vue3的前端项目以及基于laravel的后端项目。将他们分别配置为127.0.0.1 www.ggzx.com  以及 127.0.0.1 www.zx.com。

再在nginx上配置相应的项目,如下:

前端项目:

 后端项目:

 问题:

由于两个项目的前后端是不同的源,因此在浏览器中会有跨域的问题。

解决办法需要两个步骤:①服务端需要在Nginx配置中为你的代理服务添加正确的CORS头部设置 ②服务器设置中间件允许固定的访问源进行访问

如下:

server {listen 8000;server_name www.zx.com;root /Users/hoge/Desktop/code/php/zxAdmin/public;index index.php index.html index.htm;# 处理 API 路由的 CORS 配置location / {proxy_pass http://www.ggzx.com;
        proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;# 添加CORS头部add_header 'Access-Control-Allow-Origin' '*';add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization,token';# 预检请求响应,nginx会发送两个请求,其中先发送预处理请求,当允许访问的时候再发送真正的请求if ($request_method = 'OPTIONS') {add_header 'Access-Control-Allow-Origin' '*';add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization,token';add_header 'Access-Control-Max-Age' 1728000;add_header 'Content-Type' 'text/plain charset=UTF-8';add_header 'Content-Length' 0;return 204;}try_files $uri $uri/ /index.php?$query_string;}# 处理 PHP 文件location ~ \.php$ {include fastcgi_params;fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;}# 禁止访问 .ht 文件location ~ /\.ht {deny all;}# 静态文件缓存location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {expires max;log_not_found off;}}

②设置中间件文件

<?php
namespace App\Http\Middleware;use Closure;
use Illuminate\Http\Request;class HandleCors
{/*** Handle an incoming request.** @param  \Illuminate\Http\Request  $request* @param  \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse)  $next* @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse*/public function handle(Request $request, Closure $next){$response = $next($request);// 设置跨域$response->headers->set('Access-Control-Allow-Origin', '*');$response->headers->set('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');$response->headers->set('Access-Control-Allow-Headers', 'Content-Type, Accept, Authorization, X-Requested-With, Origin, X-CSRF-Token');return $response;}
}

在接口调用前使用中间建

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/840707.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据交换事前、事中、事后全流程安全机制,三方发力让安全落地!

数据交换安全对于企业的重要性不言而喻。它不仅关系到企业核心资产和商业机密安全,还影响企业合规、客户信任、业务创新及企业品牌价值等多个方面。因此,越来越多的企业高度重视数据交换安全保护,力求构筑牢固的安全基础,为长远发展开拓空间。飞驰云联基于企业对数据交换安…

2024.11.25(周一)

用Java代码模拟实现课堂上的“银行账户”的实例,要求编写客户端测试代码模拟用户存款和取款,注意账户对象状态和行为的变化。 实验要求: 1. 画出对应的类图; 2. 提交源代码; 3. 注意编程规范。1、类图2、源代码 (1)GreenState.java package rjsj.no22;public clas…

百度网站标题被修改不了,百度搜索结果标题优化

如果百度搜索结果中的网站标题无法按预期显示,可以尝试以下方法优化:检查 <title> 标签:确保每个页面的 <title> 标签内容唯一且包含主要关键词。 例如:<title>新标题 - 关键词1, 关键词2</title>使用 robots.txt 和 meta 标签:在 robots.txt 文件…

网站模板买过来要修改吗,购买网站模板后的修改建议

购买网站模板后,通常需要进行一些修改以适应您的业务需求。以下是一些建议:需求分析:明确您的业务需求,确定需要修改的部分,如页面布局、颜色方案、功能模块等。 备份模板:在进行任何修改前,确保备份原始模板文件,防止意外损失。 修改内容:使用文本编辑器(如Sublime …

网站导航修改 如何修改网站的导航

登录后台:通过浏览器访问您的网站后台管理界面,通常地址为 http://yourdomain/admin 或类似路径。 进入导航管理:在后台左侧菜单中找到“导航管理”或“菜单管理”选项,点击进入导航管理页面。 修改导航项:在导航管理页面中,添加、删除或修改导航项,调整顺序。 保存设置…

python-memoryview

在Python中,memoryview是一个内置函数,它提供了一种对字节样式数据的高效、可切片访问的方式,而无需复制底层数据。这对于处理大型数组或缓冲区特别有用,因为它可以避免不必要的内存分配和复制,从而提高性能。memoryview对象提供了一种视图到已存在的内存块,而不是创建新…

VMware ESXi 7.0U3q macOS Unlocker OEM BIOS 2.7 标准版和厂商定制版

VMware ESXi 7.0U3q macOS Unlocker & OEM BIOS 2.7 标准版和厂商定制版VMware ESXi 7.0U3q macOS Unlocker & OEM BIOS 2.7 标准版和厂商定制版 ESXi 7.0U3 标准版,Dell (戴尔)、HPE (慧与)、Lenovo (联想)、Inspur (浪潮)、Cisco (思科)、Fujitsu (富士通)、Hitachi…

Redis究竟为什么这么快?

Redis为什么这么快?完全基于内存,数据存在内存中,绝大部分请求是纯粹的内存操作,非常快速,跟传统的磁盘文件数据存储相比,避免了通过磁盘IO读取到内存这部分的开销。 数据结构简单,对数据操作也简单。【Redis中的数据结构】是专门进行设计的,每种数据结构都有一种或多种…

解密prompt系列43. LLM Self Critics

在模型持续提升的道路上,只提升Generator能力是不够的,需要同步提升Supervisor、Verifier的能力,才能提供有效的监督优化信号。人类提供的监督信号有几类,包括人工直接生成最优回答前一章我们介绍了基于模型自我合成数据迭代,来提升LLM生成更合理的自我推理思考链路。但在…

使用 DFU 模式修复或恢复 Mac 固件

搭载 Apple 芯片的 Mac 电脑 DFU 模式全新安装 macOS使用 DFU 模式修复或恢复 Mac 固件 搭载 Apple 芯片的 Mac 电脑 DFU 模式全新安装 macOS 请访问原文链接:https://sysin.org/blog/apple-silicon-mac-dfu/ 查看最新版。原创作品,转载请保留出处。 作者主页:sysin.orgMac …

安卓备份当前分区(需要root权限)

步骤安卓终端/命令行,或者打开开发者模式中的Root身份的调试。 查看分区映射,使用dd命令进行备份。终端准备Termux MT管理器 adb shell 前面两个没什么好说的,执行一下su获得root权限即可,我们以adb为例子。 https://developer.android.google.cn/tools/releases/platform-…

读数据质量管理:数据可靠性与数据质量问题解决之道14普及数据质量

普及数据质量1. 普及数据质量 1.1. 随着企业摄取越来越多的数据,数据分析也逐渐成为企业战略的重要组成部分,对高质量数据的需求只会不断增加,这给数据工程师、分析工程师,甚至数据分析师都带来了压力,要求他们承担起这个重要但富有挑战性的任务 1.2. 只有整个公司都认为数…