再谈Thinkphp6如何解决跨域请求

176次阅读

共计 2216 个字符,预计需要花费 6 分钟才能阅读完成。

此前已经讲过两次关于跨域的问题。

VUE 前后端分离时,本地小皮面板 400 等错误解决

VUE 和 Thinkphp6 做前后端分离时,跨域请求怎么设置?Access-Control-Allow-Origin 设置教程

但是近期进行复核是发现,如果每次请求都要进行 跨域预请求 的话,可能最终还是会导致无法请求到资源。

Thinkphp6 为例,在开启路由中间件的前提下,需要在 public/index.php,入口文件加入如下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?php
// +———————————————————————-
// | ThinkPHP [WE CAN DO IT JUST THINK]
// +———————————————————————-
// | Copyright (c) 2006-2019 http://thinkphp.cn All rights reserved.
// +———————————————————————-
// | Licensed (http://www.apache.org/licenses/LICENSE-2.0)
// +———————————————————————-
// | Author: liu21st <[email protected]>
// +———————————————————————-
 
// [应用入口文件]
namespace think;
// 处理跨域预检请求
if($_SERVER[‘REQUEST_METHOD’] == ‘OPTIONS’){
    // 允许的源域名
    header(“Access-Control-Allow-Origin: *”);
    // 允许的请求头信息
    header(“Access-Control-Allow-Headers: *”);
    // 允许的请求类型
    header(‘Access-Control-Allow-Methods: GET, POST, PUT,DELETE,OPTIONS,PATCH’);
    exit;
}
 
require __DIR__ . ‘/../vendor/autoload.php’;
 
// 执行 HTTP 应用并响应
$http = (new App())->http;
 
$response = $http->run();
 
$response->send();
 
$http->end($response);

保存,即可。

正文完
 0