php跨域和https访问http问题分析

1、https的web访问http地址的资源

问题:请求状态status=(canceled)   

解决办法:把资源地址改成https的

/*** HTTP地址改成HTTPS地址* @param $url*/
function changeHttp2Https(&$url){if(stripos($url, 'http://') !== false){$url = str_replace('http://','https://',$url);}
}

2、https的web访问http地址的资源

问题:请求状态status=(blocked:mixed-content)

mixed-contend解释是:出现这个问题的原因是因为 在https网站中发起的http请求被禁止。也就是在https的网站中引入了 http 的图片、css、javascript 等其他资源或文件,浏览器便会提示 “Mixed Content” 错误,这是因为http 的资源容易被恶意攻击者利用,可能会导致安全问题,浏览器认为网页不是完全安全的。

解决办法一:升级http资源为https。

解决办法二:请求当前web服务地址,再通过web服务器调用目标http资源,web服务器做中转,这样服务调服务就不会存在安全问题。

3、设置服务器允许跨域

问题1:

​Access to XMLHttpRequest at 'http://saas-purchase.com/api/demand/search' 
from origin 'http://192.168.1.1:8899' has been blocked by CORS policy: 
Response to preflight request doesn't pass access control check: 
The 'Access-Control-Allow-Origin' header contains multiple values '*, *',
but only one is allowed. 

解决办法:( '*, *' 表示设置了两个跨域请求头)检查是否nginx和php代码重复设置了响应头,删除一个即可。

问题2:  

​Access to XMLHttpRequest at 'http://saas-purchase.com/api/demand/search' 
from origin 'http://192.168.1.1:8899'has been blocked by CORS policy: 
Response to preflight request doesn't pass access control check: 
No 'Access-Control-Allow-Origin' header is present on the requested resource.

解决办法:在nginx或代码中设置跨域响应头。

在代码中添加跨域响应头的办法:
(1) 在 项目入口中(index.php)文件设置添加以下三行:
header('Access-Control-Allow-Origin:*');//设置允许域名
header('Access-Control-Allow-Methods:POST,GET,PUT,DELETE,OPTIONS');//允许请求方法 
// 或者 header('Access-Control-Allow-Methods:*');
header('Access-Control-Allow-Headers:authorization,token,content-type,Authorization');//允许请求头名
// 或者 header('Access-Control-Allow-Headers:*');(2) 添加成功之后,访问接口会返回Response Headers:
Access-Control-Allow-Headers: *
Access-Control-Allow-Methods: PUT, GET, POST, DELETE, OPTIONS
Access-Control-Allow-Origin: *

4、OPTIONS请求

HTTP 的 OPTIONS 方法 用于获取目的资源所支持的通信选项。POST请求的时候会自动发送一个OPTIONS的请求,服务器要支持这个请求,并响应status=200

<?php
header('Access-Control-Allow-Origin:*');
header('Access-Control-Allow-Methods:*');
header('Access-Control-Allow-Headers:*');$queryType = isset($_SERVER['REQUEST_METHOD']) ? $_SERVER['REQUEST_METHOD'] : '';
if ( false !== stripos($queryType, 'OPTIONS')) {echo 200;exit;
}

5、nginx代理

如果http服务器无法改成https,或者依旧存在http status=canceled问题,考虑使用nginx代理。

在php代码中把返回的资源地址中的域名替换成当前服务器的域名

/*** 替换JAVA地址为本地地址* @param $string*/
function changeJava2Proxy(&$string){$finds = ['http://xxx.com/file/file/download/image','https://xxx.com/file/file/download/image'];$replace = ['http://localhost.com/file/file/download/image','http://localhost.com/file/file/download/image'];// json格式字符串需要把 / 改成\/foreach ($finds as &$find){$find = addcslashes($find,'/');}foreach ($replace as &$find){$find = addcslashes($find,'/');}$string = str_replace($finds, $replace, $string);}

目标地址
    http://xxx.com/file/file/download/image?filePath=group1/M06/00/B4/rBAylWYg11KAF3sxAA5-gORui7U802.pdf
替换后的地址
    http://aaa.com/file/file/download/image?filePath=group1/M06/00/B4/rBAylWYg11KAF3sxAA5-gORui7U802.pdf

在nginx主机server中添加代理nginx添加代理(生产环境)

​location ~ ^/(file/file/download/image) {
   proxy_pass https://xxx.com;
}

匹配到 /file/file/download/image 开头的地址,会自动跳转到 http://xxx.com 进行处理。

多个匹配规则使用

​location ~ ^/(file/file/download/image|file/file/download/pdf) {
   proxy_pass https://xxx.com;
}

匹配到 /file/file/download/image 和 /file/file/download/pdf 开头的地址。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/3177.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

手机图片制作动态gif怎么做?不能错过的好用网站!

现在手机可是人人不离手的&#xff0c;而且手机上的很多软件功能已经逐渐取代了电脑。有时候我们想要把手机中的照片变成有动态效果的gif动图还不想下载软件的时候&#xff0c;就可以用Gif在线制作网站&#xff0c;不用下载软件&#xff0c;手机电脑都能在线操作。非常的方便小…

小孩近视用白炽灯好吗?分享多款央视推荐的护眼台灯

很多家长关心&#xff0c;小孩近视用白炽灯好吗&#xff1f;首先肯定是不太建议的&#xff0c;虽说白炽灯价格便宜&#xff0c;显色较好&#xff0c;不过光线会比较集中刺眼&#xff0c;而且由于是发热发光&#xff0c;也存在一定的安全隐患&#xff0c;更重要的是光衰现象会比…

道可云元宇宙每日资讯|广东:打造人工智能、新型储能等新增长点

道可云元宇宙每日简报&#xff08;2024年4月25日&#xff09;讯&#xff0c;今日元宇宙新鲜事有&#xff1a; 广东&#xff1a;打造人工智能、新型储能等新增长点 日前&#xff0c;广东省委常委会召开会议&#xff0c;会议指出&#xff0c;聚焦完善产业体系&#xff0c;统筹推…

Linux Docker下载镜像更改默认存储位置/usr/lib/docker

用于解决docker默认存储位置磁盘空间不足&#xff0c;切换存储位置 1、执行下面命令查看 现在docker的存储位置 docker info | grep "Docker Root Dir" 1.2、如果之前已经下载过镜像可以用mv命令把原来的镜像复制到新的地址 mv /var/lib/docker /data/docker 2、…

考研日常记录(upd 24.4.24)

由于实在太无聊了 &#xff0c; 所以记录以下考研备考日常 &#xff0c; 增加一点成就感 &#xff0c; 获得一点前进动力。 文章目录 2024.4.18 周四课程情况&#xff1a;时间规划&#xff1a; 2024.4.19 周五课程情况&#xff1a;时间规划&#xff1a; 2024.4.20 周六2024.4.2…

【Shell】循环结构——for和while循环实例

Shell可以重复地执行特定的指令&#xff0c;直到特定的条件被满足为止。这重复执行的一组指令就叫做循环 特点&#xff1a; 首先&#xff0c;循环条件中使用的变量必须是已初始化的&#xff0c;然后在循环中开始执行每次在循环开始时进行一次测试重复地执行一个代码块 循环实例…

沤血整理:好用的员工电脑行为审计软件

电脑行为审计是指对电脑用户在使用电脑过程中的行为进行监控、记录和分析的过程。 员工电脑行为审计可以帮助企业了解员工在工作电脑上的行为&#xff0c;从而保障企业信息安全&#xff0c;提高员工工作效率&#xff0c;并更好地管理员工&#xff0c;常用的电脑行为审计软件有…

(三)小程序学习笔记——生命周期、API

1、小程序的启动&#xff1a; 冷启动&#xff1a; 如果用户首次打开&#xff0c;或小程序销毁后被用户再次打开&#xff0c;此时小程序需要重新加载启动&#xff0c;即冷启动。 热启动&#xff1a; 如果用户已经打开过某小程序&#xff0c;然后在一定时间内再次打开该小程序&…

Java | Leetcode Java题解之第48题旋转图像

题目&#xff1a; 题解&#xff1a; class Solution {public void rotate(int[][] matrix) {int n matrix.length;// 水平翻转for (int i 0; i < n / 2; i) {for (int j 0; j < n; j) {int temp matrix[i][j];matrix[i][j] matrix[n - i - 1][j];matrix[n - i - 1]…

百种提权及手段一览系列第5集

特权升级的危险是显而易见的。通过提升权限&#xff0c;攻击者可以绕过网络安全措施&#xff0c;从而损害数据完整性、机密性和系统可用性。对于组织而言&#xff0c;这可能会导致数据泄露、系统停机以及潜在的法律和声誉后果。识别权限升级的迹象并部署预防性网络安全措施对于…

Multitouch 1.27.28 免激活版 mac电脑多点触控手势增强工具

Multitouch 应用程序可让您将自定义操作绑定到特定的魔术触控板或鼠标手势。例如&#xff0c;三指单击可以执行粘贴。通过执行键盘快捷键、控制浏览器的选项卡、单击鼠标中键等来改进您的工作流程。 Multitouch 1.27.28 免激活版下载 强大的手势引擎 精心打造的触控板和 Magic …

水库泄洪预警系统的作用

水电站建立的初衷有两个&#xff0c;一是用于发电&#xff0c;二是用于调节水量&#xff0c;解决下游洪涝灾害。水电站在丰水期蓄水、枯水期泄洪&#xff0c;泄洪时产生的水流又急又大&#xff0c;对电站大坝及下游存在巨大危险。为了加强水电站工程安全管理&#xff0c;保证水…

PYTHON用[有向图-邻接表]来描述社交网络中的[关注关系]

有向图(Directed Graph):在有向图中,边是有方向性的,从一个节点指向另一个节点。这意味着从节点 A 到节点 B 的边与从节点 B 到节点 A 的边可以是不同的,或者根本不存在。有向图通常用于表示具有方向性的关系,例如网页链接、社交关系中的关注关系等。 在社交网络中,有…

linux权限维持(二)

3.SSH 后门 3.1 SSH 软连接后门 软连接后门的原理是利用了 PAM 配置文件的作用&#xff0c;将 sshd 文件软连接名称设置为 su &#xff0c;这样应用在启动过 程中他会去PAM 配置文件夹中寻找是否存在对应名称的配置信息 (su) &#xff0c;然而 su 在 pam_rootok 只检测 uid…

科研工作学习中常用的录制动图软件——screenToGif

一、前言 俗话说&#xff0c;字不如表&#xff0c;表不如图&#xff0c;静图不如动图。 动图给人的直观感受&#xff0c;还是很不错的。在曾经的学生期间&#xff0c;进行组会汇报&#xff1b;还是如今工作中&#xff0c;给领导汇报。我经常使用screenToGif这款软件&#xff…

SSRF—服务器请求伪造 漏洞详解

漏洞简述 SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造&#xff0c;由服务端发起请求的一个网络攻击&#xff0c;一般用来在外网探测或攻击内网服务&#xff0c;其影响效果根据服务器用的函数不同&#xff0c;从而造成不同的影响。 SSRF 形成的原因…

Ubuntu22.04.4 - apt - 笔记

一、修改源配置 这里使用的时候又出现了联不通的情况&#xff0c;换成国内镜像 在update cp /etc/apt/source.list /etc/apt/source.list.bak vim source.list 换源地址 修改完&#xff08;网上有&#xff0c;注意&#xff1a;根据Ubuntu版本不一样&#xff0c;部分内同也会不…

探索在Apache SeaTunnel上使用Hudi连接器,高效管理大数据的技术

Apache Hudi是一个数据湖处理框架&#xff0c;通过提供简单的方式来进行数据的插入、更新和删除操作&#xff0c;Hudi能够帮助数据工程师和科学家更高效地处理大数据&#xff0c;并支持实时查询。 支持的处理引擎 Spark Flink SeaTunnel Zeta 主要特性 批处理 流处理 精确一次性…

centos7 搭建 kubernetes1.22.2 集群

centos7 搭建 kubernetes1.22.2 集群 关注【云原生AI百宝箱】公众号,获取更多云原生消息 环境: 操作系统:win10虚拟机:virtual box 、 Vmwarelinux发行版:CentOS7.9linux内核(使用uname -r查看):3.10.0-957.el7.x86_64master和node节点通信的ip(master): 10.0.0.1980.检…

【前端】vue数组去重的3种方法

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、数组去重说明二、Vue数组去重的3种方法 前言 随着开发语言及人工智能工具的普及&#xff0c;使得越来越多的人会主动学习使用一些开发工具&#xff0c;本文…