当前位置:首页 > 后端 > 正文内容

困扰了很久的PHP跨域问题

Z先生4年前 (2021-07-14)后端805

其实这个问题一直是不存在的,只是自己因为各种配置吧,导致了这个问题一直没有解决。现在就解决思路提供如下:

需要两步操作

一、修改Nignx配置文件

一般在宝塔面板伪静态中设置
示例代码:

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;
    add_header Content-Type 'application/json; charset=utf-8';
    add_header Content-Length 0;
    return 204;
  }
  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;
}

以上注意:

  1. 重复的内容不要删除;
  2. 为了提高效率,重复的正常请求放在OPTIONS之后
  3. OPTIONSreturn 204可以改成return 200
  4. nignx配置文件中之允许出现一次location /,所以在用伪静态情况下,需要将location / 中的内容和伪静态中的location /进行合并。

二、PHP在入口文件加入以下代码

一般最好是Index文件中加入,没有其他输出项之前

header("Access-Control-Allow-Origin: *");
header("Access-Control-Expose-Headers: *");
header("Access-Control-Allow-Headers: *");
header('Access-Control-Allow-Methods: *');
//拦截OPTIONS请求
if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
    header("Access-Control-Max-Age: 1728000");    //控制OPTIONS请求缓存时间
    exit();
}

特别注意:

  1. 以上代码最好不要修改
  2. NginxPHP代码都要加,不能只加1个地方
  3. Nginx中的Access-Control-Allow-OriginPHP中的Access-Control-Allow-Origin要设置一至,不要一个是:*,一个是:origin;否则绝对报错
  4. 以上设置完成后,基本上就没问题了,而大部分时间都出问题了,那么就看option请求返回有没有php版本号,如果没有,那么就被web服务拦截了,具体百度:iis处理option请求apache处理option请求nginx处理option请求按照相应的教程处理即可。
分享给朋友:

相关文章

php获取文件mime的方法,相对完整,并且已经测试

已经经过测试也相对完整,优先自带类和方法,如果自带类或者方法没有开启的情况下,通过文件扩展名实现,文件扩展名关联了176种如果实在没有开启相关组件也没有匹配到,那么就返回:application/oc...

【转】Swoole和Workerman到底选谁?

【转】Swoole和Workerman到底选谁?

Swoole:面向生产环境的 PHP 异步网络通信引擎       使 PHP 开发人员可以编写高性能的异步并发 TCP、UDP、Unix Socket、HTT...

PHP将图片自动缩放成指定大小:autoCropImage,含nginx伪静态

autoCropImage自己一直在用,并且加入了webp格式转换具体说明和介绍如下:autoCropImage - 图片自动缩放程序将图片自动缩放成指定大小,减少图片体积,从而加快下载速度,降低下载...

Composer的初步使用以及Composer切换国内源(阿里云)

Composer安装(Windows系统)下载:https://getcomposer.org/Composer-Setup.exe一步步安装即可。需要注意的是你需要开启 openssl 配置,我们打...

thinkphp6模型中联合主键、中间表调用的写法

前言Thinkphp框架是不错,但是一些特殊用法几乎找不到文档。模型就新手来说感觉会很麻烦,但是实际上习惯之后会很方便,比如入库和出库的自动格式化,再比如安全的入库。而且模型会让你养成良好的开发习惯,...

ThinkPHP6多应用下配置短路由 - TP6路由

ThinkPHP6多应用下配置短路由 - TP6路由

需要实现的效果:http://xx.com/u/RkdJ80 => http://xx.com/home/url/url/index实现步骤1. 设置tp6隐藏网址的index...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。
请先 登录 再评论,若不是会员请先 注册