文档章节

Thinkphp5.1允许uni-app的H5跨域请求接口解决方法

北桥苏
 北桥苏
发布于 07/15 17:51
字数 547
阅读 182
收藏 0

情景:

     uni-app使用vue框架开发混合APP,虽然APP或者小程序没有跨域,但希望就是写完这个既有H5,又有APP,小程序等,所以能通过后端解决跨域最好。但是不知道是vue的原因还是什么,在PHP接口基类中添加了header头完全不起作用。官方给出的方法也有,具体可以看https://uniapp.dcloud.io/api/request/request。

    

分析:

 1. 以前的做法是在接口添加以下部分就可以解决ajax的跨域(虽然也用过jsonp)。

// 指定允许其他域名访问  
        // header('Access-Control-Allow-Origin:*');
        // // 响应类型  
        // header('Access-Control-Allow-Methods:*');
        // // 响应头设置  
        // header('Access-Control-Allow-Headers:*');

 

2.  添加后请求,报错“Access to XMLHttpRequest at 'http://www.unxxx.com/api/v1.user/login' from origin 'http://192.168.2.121:8000' has been blocked by CORS policy: Request header field token is not allowed by Access-Control-Allow-Headers in preflight response.”;自定义的请求头token不被允许。因为接口请求需要带上token,把token放在自定义请求头上再传到PHP。

 

3. 于是就将token改为普通参数方式传递,但依然报错,Access to XMLHttpRequest at 'http://www.xxxxxx.com/api/v1.user/login' from origin 'http://192.168.2.121:8000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource。

 

4. 以上可以看出就是普通跨域报错了,然后看一下浏览器的请求响应报文。

 

5. 发现返回过来的头部信息完全不是自己在接口上指定的,抱着试一试的念头,把跨域请求放到了TP5.1的入口文件\public\index.php,竟然就可以正常请求了,目前我也不清楚原因是什么。

 

待续

后面就可以加域名白名单等等。坑虽然避开了,但是问题并没有解决 ,如果大家有知道原因的可以加我微信一起谈论。

 

© 著作权归作者所有

北桥苏
粉丝 8
博文 110
码字总数 68250
作品 0
深圳
程序员
私信 提问
前端筑基篇(一)->ajax跨域原理以及解决方案

说明 本文内容较老,而且已经不再更新,最新更新请移步 http://www.jianshu.com/p/82b82d5dd1ea 跨域主要是由于浏览器的“同源策略”引起,分为多种类型,本文主要探讨Ajax请求跨域问题 前言 ...

撒网要见鱼
2016/09/21
0
0
uni-app 2.2 发布,大幅提升H5端性能体验

背景 发布以来,已经服务了几十万开发者。让我们意外,或者说惊喜的是,有大量开发者用只编写H5版,并没有多端发布(可参考案例)。 这其实也符合的初衷,的定位并不是需要多端发布时才用。是...

CHB
08/16
0
0
uni-app 2.2 发布,大幅优化 H5 端性能体验

背景 发布以来,已经服务了几十万开发者。让我们意外,或者说惊喜的是,有大量开发者用只编写H5版,并没有多端发布(可参考案例)。 这其实也符合的初衷,的定位并不是需要多端发布时才用。是...

n0kia
08/16
2.6K
12
关于跨域问题

跨域首先要知道域是什么?域(Domain)是Windows网络中独立运行的单位,域和域之间相互访问,则需要建立信任关系。信任关系是连接在域和域之间的桥梁。当一个域和其他域建立信任关系之后,两...

lihao0609
2017/12/13
0
0
Vue嵌入iframe,iframe如何跨域调用vue内路由

这两天遇到一个跨域的业务逻辑,具体如下图: 关于跨域 项目 项目中vue域名为a.com,iframe域名为b.com。明显跨域了。 跨域解决办法很多,常见的 1.jsonp 2.postMessage 3.设置document.doma...

红茶配绿茶
03/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

正则表达式匹配

请实现一个函数用来匹配包括 '.' 和 '*' 的正则表达式。模式中的字符 '.' 表示任意一个字符,而 '*' 表示它前面的字符可以出现任意次(包含 0 次)。 在本题中,匹配是指字符串的所有字符匹配...

Garphy
今天
6
0
Laravel 5.1的多路由文件的配置

默认的路由配置文件只有一个, \app\Http\routes.php。 在同一个文件中写路由容易起冲突,文件会越来越大,就需要定义多个路由文件。 找到加载\app\Http\routes.php的文件, 打开\app\Provid...

mdoo
今天
5
0
Hibernate 5 开始使用指南前言

同时在面向对象软件和关系型数据库进行工作,可能会非常复杂和费时。数据在对象和数据库之间可能会不一致,然后导致开发成本会非常高。 Hibernate 是一个针对 Java 环境的对象关系映射(Obj...

honeymoose
今天
6
0
聊聊nacos ServiceManager的UpdatedServiceProcessor

序 本文主要研究一下nacos ServiceManager的UpdatedServiceProcessor ServiceManager.init nacos-1.1.3/naming/src/main/java/com/alibaba/nacos/naming/core/ServiceManager.java @Compone......

go4it
今天
7
0
正则表达式的使用(QQ格式的判断与空格的切割)

//正则表达式的使用 public static void main(String[] args) throws IOException, ClassNotFoundException { //test1("123456"); test2("-1 99 kk"); } /** * ......

zhengzhixiang
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部