Nginx+ThinkPHP+Vue解决跨域问题的方法详解
解决过程主要有两个步骤。
1.nginx配置允许跨域
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:phpprojectUserManagerpublic;
# 默认读取的文件
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;
}
}
}其中的"允许浏览器跨域请求"是关键点,因为浏览器在发现网页请求是跨域请求时,会再发送一个OPTIONS请求,只有这个请求成功了才会允许跨域请求,此时,要强行配置允许跨域。(这里配置的是允许全部请求跨域)
2.在ThinkPHP中允许跨域
编辑middleware.php文件
'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);
}
}到此这篇关于Nginx+ThinkPHP+Vue解决跨域问题的方法详解的文章就介绍到这了,更多相关Nginx ThinkPHP解决跨域内容请搜索科站长以前的文章或继续浏览下面的相关文章希望大家以后多多支持科站长!
上一篇:PHP三种方式读取RSA密钥加解密、签名验签完整教程
栏 目:PHP编程
本文标题:Nginx+ThinkPHP+Vue解决跨域问题的方法详解
本文地址:https://www.fushidao.cc/wangluobiancheng/3404.html
您可能感兴趣的文章
- 08-25PHP编程经典书籍推荐,有哪些值得一读的佳作?
- 07-12如何高效学习并掌握从入门到精通的PHP编程教程?PHP编程入门到精通
- 07-12PHP数据流编程如何实现高效处理?PHP数据流处理优化技巧
- 07-12PHP编程初学者疑问解答,入门教程交流心得分享,php入门教程
- 07-12PHP编程如何融入儿童摄影文案创作?儿童摄影文案怎么写
- 07-12php编程教程30秒为何这么短,能学会php编程吗?零基础如何快速入门php
- 07-12php007编程日记心得挑战,php007编程日记有哪些疑问困扰同好
- 07-12PHP编程语言中常用的加密方式有哪些?各自适用场景如何?PHP加密算法有哪些
- 07-12php7内存编程如何高效管理内存优化性能,避免内存泄漏?php7内存管理优化
- 07-12如何有效利用PHP编程技巧去除字符串中的重复字符?php去除字符串重复字符
阅读排行
- 1PHP编程经典书籍推荐,有哪些值得一读的佳作?
- 2如何高效学习并掌握从入门到精通的PHP编程教程?PHP编程入门到精通
- 3PHP数据流编程如何实现高效处理?PHP数据流处理优化技巧
- 4PHP编程初学者疑问解答,入门教程交流心得分享,php入门教程
- 5PHP编程如何融入儿童摄影文案创作?儿童摄影文案怎么写
- 6php编程教程30秒为何这么短,能学会php编程吗?零基础如何快速入门php
- 7php007编程日记心得挑战,php007编程日记有哪些疑问困扰同好
- 8PHP编程语言中常用的加密方式有哪些?各自适用场景如何?PHP加密算法有哪些
- 9php7内存编程如何高效管理内存优化性能,避免内存泄漏?php7内存管理优化
- 10如何有效利用PHP编程技巧去除字符串中的重复字符?php去除字符串重复字符
推荐教程
- 07-25PHP WindSearch实现站内搜索功能
- 07-25PHP建立MySQL与MySQLi持久化连接(长连接)区别
- 02-01PHP编程用什么软件?资深开发者为你揭秘最佳工具组合
- 07-25PHP调用FFmpeg实现视频切片
- 05-12php编程怎么收费,php开发费用多少钱
- 01-23重庆哪里能找到专业的PHP编程培训班?推荐哪家比较好?
- 11-23PHP 7安装使用体验之性能大提升,兼容性强,扩展支
- 01-23如何通过PHP编程实现从文本框输入并处理整数的完整代码示例?
- 02-20PHP7编程实战,PHP编程机器人设计,如何实现高效编程与智能自动化?
- 01-28php编程第3版pdf中,有哪些新特性或更新让我不得不重新学习?
