1. 程式人生 > >Thinkphp5.1允許uni-app的H5跨域請求介面解決方法

Thinkphp5.1允許uni-app的H5跨域請求介面解決方法

情景:

     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,竟然就可以正常請求了,目前我也不清楚原因是什麼。

 

待續

後面就可以加域名白名單等等。坑雖然避開了,但是問題並沒有解決 ,如果大家有知道原因的可以加我微信一起談論。

 

相關推薦

Thinkphp5.1允許uni-app的H5請求介面解決方法

情景:      uni-app使用vue框架開發混合APP,雖然APP或者小程式沒有跨域,但希

ajax本地請求以及解決方法

同源策略 AC something 三種 n) req apache2.4 策略 cor 什麽是跨域? ??我們通常所說的跨域是狹義的,是由瀏覽器同源策略限制的一類請求場景。所謂同源是指"協議+域名+端口"三者相同,即便兩個不同的域名指向同一個ip地址,也非同源,只要沒有同

JQuery - Ajax和Tomcat請求問題解決方法

頁面 解析json turn 圖片 fault $.ajax action 配置 span 在JQuery裏面使用Ajax和Tomcat服務器之間進行數據交互,遇到了跨域請求問題,無法成功得到想要的數據! 錯誤信息部分截圖: 通過錯誤信息判斷知道已經發生在Ajax跨域請求

jQuery ajax請求解決方法

由於JS同源策略的影響,因此js只能訪問同域名下的文件。因此要實現跨域,一般有以下幾個方法: 一、處理跨域的方式: 1.代理 2.XHR2 HTML5中提供的XMLHTTPREQUEST Level2(及XHR2)已經實現了跨域訪問。但ie10以下不支援 只需要在服務端

aspnet mvc 中 請求的處理方法

token onf head ken 跨域 AD 技術分享 protoc get   ASP.NET 處理跨域的兩種方式 方式1,後端程序處理。原理:給響應頭加上允許的域即可,*表示允許所有的域 定義一個cors的過濾器

什麽是請求資源的方法有哪些?

什麽是 情況 cors ade res 同時 端口 clas nginx代理 1、什麽是跨域? 由於瀏覽器同源策略,凡是發送請求url的協議、域名、端口三者之間任意一與當前頁面地址不同即為跨域。存在跨域的情況: 網絡協議不同,如http協議訪問https協議。 端口

JQuery的Ajax請求解決方式

        今天在專案中須要做遠端資料載入並渲染頁面,直到開發階段才意識到ajax跨域請求的問題,隱約記得Jquery有提過一個ajax跨域請求的解決方式,於是即刻翻出Jquery的API出來研究,發現JQuery對於Aja

django設定並獲取cookie/session,檔案上傳,ajax接收檔案,post/get請求請求等的方法

django設定並獲取cookie/session,檔案上傳,ajax接收檔案等的方法: views.py檔案: from django.shortcuts import render,HttpResponse,redirect import datetime import json from

請求兩種方法 jsonp和cors

在網站後臺跨域訪問另一伺服器時,若被訪問伺服器未設定response[‘Access-Control-Allow-Origin’] = ‘*’ 那麼將無法獲取。 jsonp方法 偽造ajax提交請求 請求端 // 基於jsonp // 原理: a

JS請求解決方案

出現JS跨域請求的原因: 瀏覽器檢測到源的異常 什麼叫做JS跨域: 兩個應用協議,主機地址(域名),埠號。三者有一個不同,則認為他們的域不同。 例如: http:localhost:80/a https:localhost:80/b 此時的a與b的應用協議是不同

面試題10:什麼是請求資源的方法有哪些?

(3)、jsonp 定義和用法:通過動態插入一個script標籤。瀏覽器對script的資源引用沒有同源限制,同時資源載入到頁面後會立即執行(沒有阻塞的情況下)。 特點:通過情況下,通過動態建立script來讀取他域的動態資源,獲取的資料一般為json格式。 例項如下: <scrip

前端:jquery ajax 請求問題解決彙總

一般情況下跨域分兩種請求方式:post、get; 1、post請求解決方式: spring cloud 專案下: 後臺demo: @CrossOrigin(allowCredentials = "true", allowedHeaders = "*", methods = {Requ

JQuery的Ajax請求解決方案(續)

在上篇博文中http://blog.csdn.net/zhouschina/article/details/41721505使用jsonp的方法解決跨域訪問問題。那麼讓我們瞭解一下Jsonp跨域的原理: jsonp的最基本的原理是:動態新增一個<script>標

關於請求和django處理請求最佳解決方案的總結

一、什麼是跨域請求?跨域:簡單來說就是 A 網站的 javascript 程式碼試圖訪問 B 網站,包括提交內容和獲取內容。這顯然是不安全的。為此,瀏覽器的鼻祖:網景(Netscape)公司提出了優秀的

幾種解決方法

跨域 -o head 反向 content nbsp ces methods 函數 1.jsonp 目標服務器設置callback 函數 服務器操作 2.cors 服務器設置header :Access-Control-Allow-Origin 服務器操作

&& 解決方法

為什麼會出現跨域問題 —— 同源策略 跨域限制僅僅是瀏覽器的行為,伺服器沒有跨域限制。 同時滿足以下三個條件才有可能發生跨域問題: 瀏覽器限制 跨域 XMLHttpRequest 請求 跨域的概念:協議、域名、埠都相同才叫同域,否則都叫跨

.Net 站點問題及解決方法

1、什麼是站點跨域 瞭解跨域之前, 先了解下什麼同源策略?百度百科:同源策略(Same origin policy)是一種約定,它是瀏覽器最核心也最基本的安全功能,如果缺少了同源策略,則瀏覽器的正常功能可能都會受到影響。可以說Web是構建在同源策略基礎之上的,瀏覽器只是針對同源策略的一種實現。同源:同一個協

微信授權存在的問題以及解決方法

【問題描述】 在前後端徹底分離的情況下,當我們的前端通過Ajax訪問某個後臺提供的介面地址的時候,瀏覽器會提示錯誤(通過檢視控制檯檢視),並且不能看到微信授權後的結果。總而言之就是出現了跨域問題。 【第一種解決方法】 後臺程式碼不要企圖一次性完成所有的授權服務並且直接返

問題以及解決方法

什麼是跨域? 跨域,指的是瀏覽器不能執行其他網站的指令碼。它是由瀏覽器的同源策略造成的,是瀏覽器對javascript施加的安全限制。 所謂同源是指,域名,協議,埠均相同,不明白沒關係,舉個栗子: http://www.123.com/index.html 呼叫

js常見問題及解決方法

什麼是跨域? 概念:只要協議、域名、埠有任何一個不同,都被當作是不同的域。 URL 說明 是否允許通訊 http://www.a.com/a.js http://www.a.com/b.js 同一域名下