tp5.0 ajax 填写了 Access-Control-Allow-Origin仍然显示跨域
网上基本所有的方法都试过了,还是无法解决
第一种方法,在入口文件:public/index.php
header("Access-Control-Allow-Origin:*");
header("Access-Control-Allow-Methods:GET,POST,PUT,OPTIONS,DELETE");
header("Access-Control-Allow-Headers:Origin, X-Requested-With, Content-Type, Accept");
无效~
第二种方法:挂钩子
在application/下新建一个CORS.php
namespace app\sendApi;
use think\Response;
class CORS
{
public function run(&$dispatch)
{
header("Access-Control-Allow-Origin:*");
$host_name = isset($_SERVER['HTTP_ORIGIN']) ? $_SERVER['HTTP_ORIGIN'] : "*";
$headers = [
"Access-Control-Allow-Origin" => $host_name,
"Access-Control-Allow-Credentials" => 'true',
"Access-Control-Allow-Headers" => "x-token,x-uid,x-token-check,x-requested-with,content-type,Host"
];
if ($dispatch instanceof Response) {
$dispatch->header($headers);
} else if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
$dispatch['type'] = 'response';
$response = new Response('', 200, $headers);
$dispatch['response'] = $response;
}
}
}
同时在tag.php中的app_init,app_begin,app_end中都添加了路径,确定路径是正确的,但是仍然显示跨域
错误提示:
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
特意建了个 5.0.24 的项目,测试正常可以。
方案 1 (入口添加)
响应结果
方案 2(Hook 添加)
响应结果
补充
Hook 类的 run 方法参数的 引用符号 (
&
) 是可选的,因为对象默认是引用传递的。