京东6.18大促主会场领京享红包更优惠

 找回密码
 立即注册

QQ登录

只需一步,快速开始

Nginx+ThinkPHP+Vue办理跨域问题的方法详解

2024-11-4 08:09| 发布者: ae2942d9| 查看: 86| 评论: 0

摘要: 目录1.nginx配置答应跨域2.在ThinkPHP中答应跨域办理过程主要有两个步骤。 1.nginx配置答应跨域 [code]worker_processes 1; events { worker_connections 1024; } http { include mime.types;
目录

办理过程主要有两个步骤。

1.nginx配置答应跨域

[code]worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; server { listen 80; # 域名 server_name localhost; # 服务器根目录 root H:\php\project\UserManager\public; # 默认读取的文件 index index.php index.html index.htm; location / { # 答应欣赏器跨域请求 if ($request_method = 'OPTIONS') { add_header Access-Control-Allow-Origin '*'; add_header Access-Control-Allow-Headers '*'; add_header Access-Control-Allow-Methods '*'; add_header Access-Control-Allow-Credentials 'true'; return 204; } if (!-e $request_filename) { rewrite ^(.*)$ /index.php?s=/$1 last; break; } try_files $uri $uri/ /index.php?$query_string; } # 监听127.0.0.1:9000端口,要和php-cgi.exe配置的ip:端口一致 location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } } }[/code]

其中的“答应欣赏器跨域请求”是关键点,因为欣赏器在发现网页请求是跨域请求时,会再发送一个OPTIONS请求,只有这个请求乐成了才会答应跨域请求,此时,要强行配置答应跨域。(这里配置的是答应全部请求跨域)

2.在ThinkPHP中答应跨域

编辑middleware.php文件

[code]<?php // 全局中间件界说文件 return [ //答应跨域 //\think\middleware\AllowCrossDomain::class \app\middleware\AllowCrossDomain::class // 全局请求缓存 // \think\middleware\CheckRequestCache::class, // 多语言加载 // \think\middleware\LoadLangPack::class, // Session初始化 // \think\middleware\SessionInit::class ];[/code] [code]<?php declare (strict_types = 1); namespace app\middleware; use Closure; use think\Config; use think\Request; use think\Response; /** * 跨域请求支持 */ class AllowCrossDomain { protected $cookieDomain; protected $header = [ 'Access-Control-Allow-Credentials' => 'true', 'Access-Control-Max-Age' => 1800, 'Access-Control-Allow-Methods' => 'GET, POST, PATCH, PUT, DELETE, OPTIONS', 'Access-Control-Allow-Headers' => 'Token, Authorization, Content-Type, If-Match, If-Modified-Since, If-None-Match, If-Unmodified-Since, X-CSRF-TOKEN, X-Requested-With', ]; public function __construct(Config $config) { $this->cookieDomain = $config->get('cookie.domain', ''); } /** * 答应跨域请求 * @access public * @param Request $request * @param Closure $next * @param array $header * @return Response */ public function handle($request, Closure $next, ? array $header = []) { $header = !empty($header) ? array_merge($this->header, $header) : $this->header; if (!isset($header['Access-Control-Allow-Origin'])) { $origin = $request->header('origin'); if ($origin && ('' == $this->cookieDomain || strpos($origin, $this->cookieDomain))) { $header['Access-Control-Allow-Origin'] = $origin; } else { $header['Access-Control-Allow-Origin'] = '*'; } } return $next($request)->header($header); } }[/code]

到此这篇关于Nginx+ThinkPHP+Vue办理跨域问题的方法详解的文章就先容到这了,更多相干Nginx ThinkPHP办理跨域内容请搜索脚本之家从前的文章或继续欣赏下面的相干文章希望大家以后多多支持脚本之家!


来源:https://www.jb51.net/program/319139swq.htm
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
关闭

站长推荐上一条 /6 下一条

QQ|手机版|小黑屋|梦想之都-俊月星空 ( 粤ICP备18056059号 )|网站地图

GMT+8, 2025-7-2 00:53 , Processed in 0.028677 second(s), 19 queries .

Powered by Mxzdjyxk! X3.5

© 2001-2025 Discuz! Team.

返回顶部