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 同一域名下