首页 > 后端开发 > 正文

php框架解决跨域 微信公众号支付报跨域错误,后台是php

2023-09-23 02:14:34 | 我爱编程网

在平时的学习生活当中,对于后端开发一定都很关心,今天我爱编程网小编为大家整理了php框架解决跨域 微信公众号支付报跨域错误,后台是php,希望能够帮助到大家。

php框架解决跨域 微信公众号支付报跨域错误,后台是php

微信公众号支付报跨域错误,后台是php

首先明确一个概念,微信接口并不是用ajax访问的。希望你是在后台使用curl的。
在以上前提下,此报错是因为你的后台没有设置响应首部字段导致。以下两种方式均可解决:
后台入口文件同级目录下 .htaccess文件添加以下语句
Header always set Access-Control-Allow-Origin "*"
或者
在被访问的PHP文件头部增加
header("Access-Control-Allow-Origin: *");

php框架解决跨域 微信公众号支付报跨域错误,后台是php我爱编程网

怎么解决跨域问题

1、 通过jsonp跨域
JSONP(JSON with Padding:填充式JSON),应用JSON的一种新方法,
JSON、JSONP的区别:
1、JSON返回的是一串数据、JSONP返回的是脚本代码(包含一个函数调用)
2、JSONP 只支持get请求、不支持post请求
(类似往页面添加一个script标签,通过src属性去触发对指定地址的请求,故只能是Get请求)

2、代理:
www.baidu.com/index.html 需要调用 www.sina.com/server.php ,可以写一个接口 www.baidu.com/server.php ,由这个接口在后端去调用 www.sina.com/server.php 并拿到返回值,然后再返回给index.html
3、PHP端修改header
header(‘Access-Control-Allow-Origin:*’);//允许所有来源访问
header(‘Access-Control-Allow-Method:POST,GET’);//允许访问的方式
4、document.domain
跨域分为两种,一种xhr不能访问不同源的文档,另一种是不同window之间不能进行交互操作;
document.domain主要是解决第二种情况,且只能适用于主域相同子域不同的情况;
document.domain的设置是有限制的,我们只能把document.domain设置成自身或更高一级的父域,且主域必须相同。例如:a.b.example.com中某个文档的document.domain可以设成a.b.example.com、b.example.com 、example.com中的任意一个,但是不可以设成c.a.b.example.com,因为这是当前域的子域,也不可以设成baidu.com,因为主域已经不相同了。
兼容性:所有浏览器都支持;
优点:
可以实现不同window之间的相互访问和操作;
缺点:
只适用于父子window之间的通信,不能用于xhr;
只能在主域相同且子域不同的情况下使用;
使用方式:
不同的框架之间是可以获取window对象的,但却无法获取相应的属性和方法。比如,有一个页面,它的地址是 , 在这个页面里面有一个iframe,它的src是 , 很显然,这个页面与它里面的iframe框架是不同域的,所以我们是无法通过在页面中书写js代码来获取iframe中的东西的:

<script type="text/javascript">
function test(){
var iframe = document.getElementById('ifame');
var win = document.contentWindow;//可以获取到iframe里的window对象,但该window对象的属性和方法几乎是不可用的
var doc = win.document;//这里获取不到iframe里的document对象
var name = win.name;//这里同样获取不到window对象的name属性
}
</script>
<iframe id = "iframe" src=" " onload = "test()"></iframe>
这个时候,document.domain就可以派上用场了,我们只要把 和 这两个页面的document.domain都设成相同的域名就可以了。
1.在页面 中设置document.domain:

<iframe id = "iframe" src=" " onload = "test()"></iframe>
<script type="text/javascript">
document.domain = 'example.com';//设置成主域
function test(){
alert(document.getElementById('iframe').contentWindow);//contentWindow 可取得子窗口的 window 对象
}
</script>
2.在页面 中也设置document.domain:

<script type="text/javascript">
document.domain = 'example.com';//在iframe载入这个页面也设置document.domain,使之与主页面的document.domain相同
</script>
5、window.name
关键点:window.name在页面的生命周期里共享一个window.name;
兼容性:所有浏览器都支持;
优点:
最简单的利用了浏览器的特性来做到不同域之间的数据传递;
不需要前端和后端的特殊配制;
缺点:
大小限制:window.name最大size是2M左右,不同浏览器中会有不同约定;
安全性:当前页面所有window都可以修改,很不安全;
数据类型:传递数据只能限于字符串,如果是对象或者其他会自动被转化为字符串,如下;
这里写图片描述
使用方式:修改window.name的值即可;
6、postMessage
关键点:
postMessage是h5引入的一个新概念,现在也在进一步的推广和发展中,他进行了一系列的封装,我们可以通过window.postMessage的方式进行使用,并可以监听其发送的消息;
兼容性:移动端可以放心用,但是pc端需要做降级处理
优点
不需要后端介入就可以做到跨域,一个函数外加两个参数(请求url,发送数据)就可以搞定;
移动端兼容性好;
缺点
无法做到一对一的传递方式:监听中需要做很多消息的识别,由于postMessage发出的消息对于同一个页面的不同功能相当于一个广播的过程,该页面的所有onmessage都会收到,所以需要做消息的判断;
安全性问题:三方可以通过截获,注入html或者脚本的形式监听到消息,从而能够做到篡改的效果,所以在postMessage和onmessage中一定要做好这方面的限制;
发送的数据会通过结构化克隆算法进行序列化,所以只有满足该算法要求的参数才能够被解析,否则会报错,如function就不能当作参数进行传递;
使用方式:通信的函数,sendMessage负责发送消息,bindEvent负责消息的监听并处理,可以通过代码来做一个大致了解;

Storage.prototype.sendMessage_ = function(type, params, fn) {
if (this.topWindow) {
this.handleCookie_(type, params, fn);
return;
}
var eventId = this.addToQueue_(fn, type);
var storageIframe = document.getElementById('mip-storage-iframe');
var element = document.createElement("a");
element.href = this.origin;
var origin = element.href.slice(0, element.href.indexOf(element.pathname) + 1);
storageIframe.contentWindow.postMessage({
type: type,
params: params,
eventId: eventId
}, origin);
}
Storage.prototype.bindEvent_ = function() {
window.onmessage = function (res) {
// 判断消息来源
if (window == res.source.window.parent &&
res.data.type === this.messageType.RES &&
window.location.href.match(res.origin.host).length > 0) {
var fn = this.eventQueue[res.data.eventId];
fn && fn();
delete this.eventQueue[res.data.eventId];
// reset id
var isEmpty = true;
for (var t in this.eventQueue) {
isEmpty = false;
}
if (isEmpty) {
this.id = 0;
}
}
}.bind(this);
}

php框架解决跨域 微信公众号支付报跨域错误,后台是php

phpStudy搭建本地后台环境并解决跨域问题

之前写了一篇, 用express搭建后台模拟接口数据 。现在要使用PHP写后台接口(笔者用的时ThinkPHP),怎么用phpStudy搭建个本地服务呢。

到这里就配置好了,在浏览器中访问 www.test.com 就可以打开后台了。

用ajax,axios等调用后台接口时,同样会遇到接口跨域访问的问题,报错如下。

应该还要其他的方法搭建服务以及解决跨域的问题,欢迎分享你的方法。

以上就是关于php框架解决跨域 微信公众号支付报跨域错误,后台是php的全部内容了,如果需要了解更多相关资讯敬请关注我爱编程网。
与“php框架解决跨域 微信公众号支付报跨域错误,后台是php”相关推荐
PHP框架跨域问题 thinkphp6解决 CORS 跨域
PHP框架跨域问题 thinkphp6解决 CORS 跨域

PHP如何实现不同网站登录跨域的问题可以用sso单点登录解决这个问题,本质是不同的域名能同时记录同一个cookie很久之前做过这个功能,有点忘了,大概的步骤:例如你在test1.com登录成功后,会给一个应用中心发请求,这个应用中心保存着所有的sso登录的设置cookie的url,每个应用组装成一个script标签返回给你你接收到这些script标签后,让这些标签

2023-09-15 21:53:57
php框架路由与请求跨域 跨域是指什么,因为什么引起的?有哪些解决方案?web前端知识
php框架路由与请求跨域 跨域是指什么,因为什么引起的?有哪些解决方案?web前端知识

ThinkPHP特点有哪些hinkPHP是一个免费开源的,快速、简单的面向对象的轻量级PHP开发框架,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP特点采用容器统一管理对象支持Facade更易用的路由注解路由支持路由跨域请求支持验证类增强配置和路由目录独立取消系统常量类库别名机

2023-10-02 23:11:17
web前端开发跨域 跨域是什么意思
web前端开发跨域 跨域是什么意思

跨域是什么意思问题一:跨域是指什么,因为什么引起的?有哪些解决方案?web前端知识跨域是指不同域名之间相互访问例如我的电脑上有2个服务器192.168.0.11192.168.0.12如果第一个服务器上的页面要访问第二个服务器就叫做跨域或者baidu要访问xxx也是不同域名也是跨域HTML5里有个window.postMessage方法,支持跨域访问,详情可以参考webhek/win

2023-09-14 06:05:49
web前端开发怎么实现跨域 详解如何解决vue开发请求数据跨域的问题(基于浏览器的配置解决)
web前端开发怎么实现跨域 详解如何解决vue开发请求数据跨域的问题(基于浏览器的配置解决)

前端跨域问题有哪些常用的解决方式自己搭一个小型服务器就可以了。或者webstorm和brackets都有自己集成的小型服务器,能解决跨域问题。还有一种方法,就是如果是chrome浏览器的话这里加上“--allow-file-access-from-files”也可以解决跨域问题前端跨域如何解决?什么是跨域?跨域是通俗的说是从一个域名去请求另一个域名的资源。比

2023-10-13 07:45:48
PHP框架跨域问题 PHP 如何实现不同网站登录跨域的问题
PHP框架跨域问题 PHP 如何实现不同网站登录跨域的问题

怎么解决跨域问题1、通过jsonp跨域JSONP(JSONwithPadding:填充式JSON),应用JSON的一种新方法,JSON、JSONP的区别:1、JSON返回的是一串数据、JSONP返回的是脚本代码(包含一个函数调用)2、JSONP只支持get请求、不支持post请求(类似往页面添加一个script标签,通过src属性去触发对指定地址的请求,故只能是Get请求

2023-09-15 21:54:08
php微信公众号开发框架 php微信公众平台开发ibeacon怎么写
php微信公众号开发框架 php微信公众平台开发ibeacon怎么写

怎么样使用php的laravel框架快速集成微信登录1.安装php_weixin_provider在项目下运行composerrequirethirdproviders/weixin,即可完成安装。安装成功后,在项目的vendor目录下应该能看到php_weixin_provider的库文件:image2.配置微信登录的参数一共有7个参数可以配置,分别是:client_i

2023-10-04 03:56:34
微信公众号开发框架php 开发微信公众号用PHP好还是java好?
微信公众号开发框架php 开发微信公众号用PHP好还是java好?

微信公众号是有什么程序语言开发的需要“PHP语言程序、MySQL数据库、计算机网络通讯、及HTTP/XML/CSS/JS等基础”PHPPHP,一个嵌套的缩写名称,是英文超级文本预处理语言的缩写。PHP是一种HTML内嵌式的语言,PHP与微软的ASP颇有几分相似,都是一种在服务器端执行的嵌入HTML文档的脚本语言,语言的风格有类似于C语言,现在被很多的网站编程人员广泛的运用。PH

2023-10-05 15:59:14
微信公众号PHP框架 php微信开发是什么?
微信公众号PHP框架 php微信开发是什么?

如何将微信公众号文章同步到Php和cms系统网站里?运行孤狼采集器软件,点击发布到发布窗口界面;2、点击添加,选择发布接口,选择网站编码、填写后台路径、(因为是免登陆接口)选择不需要登录&amp;http请求,然后获取列表看看是否成功,成功后请保持配置,就可以直接发布文章进去了!PHP使用Face++接口开发微信公众平台人脸识别系统的方法?具体步骤如下:首先,先登录face

2023-08-26 07:31:16