


Probleme mit der Vue-Cli-Axios-Anfragemethode und der domänenübergreifenden Verarbeitung
In diesem Artikel werden hauptsächlich die Axios-Anforderungsmethode und domänenübergreifende Verarbeitungsprobleme vorgestellt. Der Artikel erwähnt auch Axios in Vue zur Lösung domänenübergreifender Probleme und hat einen Referenzwert Wer braucht es? Als Referenz
vue-cli Axios-Anforderungsmethode und domänenübergreifende Verarbeitung
Axios installieren
cnpm install axios --save
Axios einführen
main.js文件 :import axios from 'axois' 要发送请求的文件:import axios from 'axois'
Legen Sie den Proxy in der Datei config/index.js fest
dev: { proxyTable: {// 输入/api 让其去访问http://localhost:3000/api '/api':{ target:'http://localhost:3000'//设置调用的接口域名和端口号 ( 设置代理目标) }, '/api/*':{ target:'http://localhost:3000' }, changeOrigin: true, pathRewrite: { //路径重写 '^/api': '/' //这里理解成用‘/api'代替target里面的地址,后面组件中我们掉接口时直接用api代替 比如我要调用'http://localhost:3002/user/add',直接写‘/api/goods/add'即可 } }
Probieren Sie es aus, domänenübergreifend ist erfolgreich, aber dieses Wissen von Die Entwicklungsumgebung (dev) löst das domänenübergreifende Problem. Wenn es in der Produktionsumgebung tatsächlich auf dem Server bereitgestellt wird, treten immer noch domänenübergreifende Probleme auf, wenn es nicht vom gleichen Ursprung ist.
Axios-Anfragemethode
Anfrage abrufen
// 向具有指定id的用户发出请求 axios.get('/user?id=1001') .then(function (response) { console.log(response.data); }).catch(function (error) { console.log(error); }); // 也可以通过 params 对象传递参数 axios.get('/user', { params: { id: 1001 } }).then(function (response) {//请求成功回调函数 console.log(response); }).catch(function (error) {//请求失败时的回调函数 console.log(error); });
Beitragsanfrage
axios.post('/user', { userId: '10001' //注意post请求发送参数的方式和get请求方式是有区别的 }).then(function (response) { console.log(response); }).catch(function (error) { console.log(error); });
Ergänzung:
Axios in Vue löst domänenübergreifende Probleme und die Verwendung von Interceptoren
1. Axios in Vue unterstützt die Deklarationsmethode vue.use() nicht. Es gibt also zwei Möglichkeiten, dieses Problem zu lösen:
Die erste: Führen Sie Axios in main.js ein und legen Sie es dann als Eigenschaft in der Vue-Prototypkette fest, sodass auf this.axios direkt im zugegriffen werden kann Komponente Verwenden von
import axios from 'axios'; Vue.prototype.axios=axios; components: this.axios({ url:"a.xxx", method:'post', data:{ id:3, name:'jack' } }) .then(function(res){ console.log(res); }) .catch(function(err){ console.log(err); }) }
Hier ist zu beachten, dass es ungültig ist, dies zum Kopieren der angeforderten Daten in Daten in Axios zu verwenden, was durch Verwenden gelöst werden kann Pfeilfunktionen.
1. Das domänenübergreifende Problem des lokalen Proxys, wenn das Vue-CLI-Gerüst-Frontend die Back-End-Datenschnittstelle anpasst, greife ich beispielsweise auf die Schnittstelle auf localhost http://10.1.5.11:8080/ zu. xxx/duty?time=2017- 07-07 14:57:22', es muss domänenübergreifend darauf zugegriffen werden. Bei direktem Zugriff wird XMLHTTPRequest nicht geladen gemeldet http://10.1.5.11:8080/xxx/duty? time=2017-07-07 14:57:22'. Die Antwort auf die Preflight-Anfrage besteht die Zugriffskontrolle nicht.
Warum gibt es ein domänenübergreifendes Problem? Da es sich hierbei um keine Originalkommunikation handelt, können Sie zu Google gehen, um mehr darüber zu erfahren. Hier müssen Sie nur index.js in der Konfiguration finden:
config/index.js dev: { proxyTable: { '/api': { target: 'http://10.1.5.11:8080/',//设置你调用的接口域名和端口号 changeOrigin: true, //跨域 pathRewrite: { '^/api': '/' //这里理解成用‘/api'代替target里面的地址,后面组件中我们掉接口时直接用api代替 比如我要调用'http://10.1.5.11:8080/xxx/duty?time=2017-07-07 14:57:22',直接写‘/api/xxx/duty?time=2017-07-07 14:57:22'即可 } }
Das domänenübergreifende Problem ist erfolgreich, aber dies löst nur das domänenübergreifende Problem in der Entwicklungsumgebung (dev). Wenn es in der Produktionsumgebung tatsächlich auf dem Server bereitgestellt wird, gibt es immer noch Kreuz -Domänenprobleme, wenn es nicht aus derselben Quelle stammt. Der von uns bereitgestellte Server-Port ist beispielsweise 3001 und erfordert ein gemeinsames Debuggen von Front-End und Back-End. Im ersten Schritt können wir das Front-End in zwei Umgebungen testen. Produktion und Entwicklung. Konfigurieren Sie sie in config/dev.env.js, also in der Entwicklungs-/Produktionsumgebung. In der Entwicklungsumgebung verwenden wir die oben konfigurierte Proxy-Adresse In der Produktionsumgebung verwenden wir die normale Schnittstellenadresse. Nehmen Sie daher die folgenden Konfigurationen in den Dateien config/dev.env.js
und prod.env.js
vor.
config/dev.env.js: module.exports = merge(prodEnv, { NODE_ENV: '"development"',//开发环境 API_HOST:"/api/" }) prod.env.js module.exports = { NODE_ENV: '"production"',//生产环境 API_HOST:'"http://10.1.5.11:8080/"' }
Natürlich können Sie http://10.1.5.11:8080/ sowohl in Entwicklungs- als auch in Produktionsumgebungen direkt anfordern. Nach der Konfiguration ermittelt das Programm beim Testen automatisch, ob es sich bei der aktuellen Umgebung um eine Entwicklungs- oder Produktionsumgebung handelt, und stimmt dann automatisch mit API_HOST überein. Wir können in jeder Komponente die Adresse „process.env.API_HOST“ verwenden, z. B.:
example.post(process .env.API_HOST+'user/login', this.form)
Dann konfiguriert der Backend-Server im zweiten Schritt domänenübergreifendes Cros, also access-control-allow-origin: *Alle Zugriffe bedeuten . Zusammenfassend lässt sich sagen: In einer Entwicklungsumgebung kann unser Front-End einen domänenübergreifenden Proxy konfigurieren. In einer echten Produktionsumgebung benötigen wir die Zusammenarbeit mit dem Back-End. Ein bestimmter Experte sagte: Diese Methode ist in IE9 und darunter nicht einfach zu verwenden. Wenn Kompatibilität erforderlich ist, besteht die beste Möglichkeit darin, einen Proxy zum Server-Port im Backend hinzuzufügen. Der Effekt ähnelt dem des Webpack-Proxys.
1. Axios sendet ein Problem mit der Post-Anfrage
Beim Senden einer Post-Anfrage wird im Allgemeinen der Inhaltstyp festgelegt, der Typ des zu sendenden Inhalts, Anwendung/JSON bezieht sich auf das Senden eines JSON-Objekts. Sie müssen es jedoch im Voraus stringifizieren. application/xxxx-form bezieht sich auf das Senden? Im Format a=b&c=d können Sie es mit der qs-Methode formatieren. Nach der Installation von axios wird es nur noch in die Komponente importiert.
const postData=JSON.stringify(this.formCustomer); 'Content-Type':'application/json'} const postData=Qs.stringify(this.formCustomer);//过滤成?&=格式 'Content-Type':'application/xxxx-form'}
1. Einsatz von Abfangjägern
Wenn wir eine Adressseite besuchen, werden wir manchmal gefragt, ob Sie Melden Sie sich erneut an und besuchen Sie dann diese Seite. Dies bedeutet, dass die Identitätsauthentifizierung fehlgeschlagen ist, z. B. das Token verloren gegangen ist oder das Token noch lokal vorhanden ist, aber ungültig geworden ist. Daher kann die einfache Beurteilung, ob ein lokaler Tokenwert vorhanden ist, nicht gelöst werden das Problem. Zu diesem Zeitpunkt gibt der Server bei der Anforderung einen 401-Fehler zurück, der auf einen Autorisierungsfehler hinweist, dh es besteht kein Recht, auf die Seite zuzugreifen.
Wir können diese Situation filtern, bevor wir alle Anfragen senden und bevor wir die Serverantwortdaten verarbeiten.
// http request 请求拦截器,有token值则配置上token值 axios.interceptors.request.use( config => { if (token) { // 每次发送请求之前判断是否存在token,如果存在,则统一在http请求的header都加上token,不用每次请求都手动添加了 config.headers.Authorization = token; } return config; }, err => { return Promise.reject(err); }); // http response 服务器响应拦截器,这里拦截401错误,并重新跳入登页重新获取token axios.interceptors.response.use( response => { return response; }, error => { if (error.response) { switch (error.response.status) { case 401: // 这里写清除token的代码 router.replace({ path: 'login', query: {redirect: router.currentRoute.fullPath} //登录成功后跳入浏览的当前页面 }) } } return Promise.reject(error.response.data) });
Schau unten
vue cli脚手架前端调后端数据接口时候的本地代理跨域问题,如我在本地localhost访问接口http://40.00.100.100:3002/是要跨域的,相当于浏览器设置了一到门槛,会报错XMLHTTPRequest can not load http://40.00.100.100:3002/. Response to preflight request doesn't
pass access control…. 为什么跨域同源非同源自己去查吧,在webpack配置一下proxyTable就OK了,如下 config/index.js
dev: { 加入以下 proxyTable: { '/api': { target: 'http://40.00.100.100:3002/',//设置你调用的接口域名和端口号 别忘了加http changeOrigin: true, pathRewrite: { '^/api': '/' //这里理解成用‘/api'代替target里面的地址, 后面组件中我们掉接口时直接用api代替 比如我要调 用'http://40.00.100.100:3002/user/add',直接写‘/api/user/add'即可 } } }
上面是我整理给大家的,希望今后会对大家有帮助。
相关文章:
Das obige ist der detaillierte Inhalt vonProbleme mit der Vue-Cli-Axios-Anfragemethode und der domänenübergreifenden Verarbeitung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Axios wird häufig in Vue-Anwendungen verwendet. Axios ist ein Promise-basierter HTTP-Client, der in Browsern und Node.js verwendet werden kann. Während des Entwicklungsprozesses erscheint manchmal die Fehlermeldung „Uncaught(inpromise)Error: Requestfailedwithstatuscode500“. Für Entwickler kann diese Fehlermeldung schwer zu verstehen und zu lösen sein. In diesem Artikel wird dies untersucht

Auswahl der Datenanforderung in Vue: AxiosorFetch? In der Vue-Entwicklung ist die Bearbeitung von Datenanfragen eine sehr häufige Aufgabe. Die Wahl des für Datenanfragen zu verwendenden Tools ist eine Frage, die berücksichtigt werden muss. In Vue sind Axios und Fetch die beiden am häufigsten verwendeten Tools. In diesem Artikel werden die Vor- und Nachteile beider Tools verglichen und Beispielcode bereitgestellt, der Ihnen bei der Entscheidungsfindung helfen soll. Axios ist ein Promise-basierter HTTP-Client, der in Browsern und Node funktioniert.

Kürzlich bin ich bei der Entwicklung von Vue-Anwendungen auf ein häufiges Problem gestoßen: die Fehlermeldung „TypeError: Failedtofetch“. Dieses Problem tritt auf, wenn Axios zum Senden von HTTP-Anfragen verwendet wird und der Backend-Server nicht korrekt auf die Anfrage antwortet. Diese Fehlermeldung weist normalerweise darauf hin, dass die Anfrage den Server nicht erreichen kann, möglicherweise aus Netzwerkgründen oder weil der Server nicht antwortet. Was sollen wir tun, nachdem diese Fehlermeldung erscheint? Hier sind einige Problemumgehungen: Überprüfen Sie Ihre Netzwerkverbindung aufgrund von

Wie kann das Problem „Fehler: NetworkError“ bei der Verwendung von Axios in der Vue-Anwendung gelöst werden? Bei der Entwicklung von Vue-Anwendungen verwenden wir häufig Axios, um API-Anfragen zu stellen oder Daten abzurufen, aber manchmal stoßen wir in Axios-Anfragen auf „Fehler: NetworkError“. Was sollten wir in diesem Fall tun? Zunächst müssen Sie verstehen, was „Fehler:Netzwerkfehler“ bedeutet. Normalerweise bedeutet dies, dass die Netzwerkverbindung unterbrochen ist

Nutzen Sie Vue und Axios effizient, um die Stapelverarbeitung von Front-End-Daten zu implementieren. In der Front-End-Entwicklung ist die Datenverarbeitung eine häufige Aufgabe. Wenn wir große Datenmengen verarbeiten müssen, wird die Datenverarbeitung sehr umständlich und ineffizient, wenn es keine wirksame Methode gibt. Vue ist ein hervorragendes Front-End-Framework und Axios ist eine beliebte Netzwerkanforderungsbibliothek. Sie können zusammenarbeiten, um eine Stapelverarbeitung von Front-End-Daten zu implementieren. In diesem Artikel wird detailliert beschrieben, wie Vue und Axios effizient für die Stapelverarbeitung von Daten eingesetzt werden können, und es werden relevante Codebeispiele bereitgestellt.

Was soll ich tun, wenn bei der Verwendung von Axios in einer Vue-Anwendung „Fehler: timeoutofxxxmsexceeded“ auftritt? Mit der rasanten Entwicklung des Internets wird die Front-End-Technologie ständig aktualisiert und iteriert. Als hervorragendes Front-End-Framework wurde Vue in den letzten Jahren von allen begrüßt. In Vue-Anwendungen müssen wir häufig Axios verwenden, um Netzwerkanforderungen zu stellen, aber manchmal tritt der Fehler „Fehler: timeoutofxxxmsexceeded“ auf.

Eine vollständige Anleitung zur Implementierung des Datei-Uploads in Vue (axios, element-ui) In modernen Webanwendungen ist das Hochladen von Dateien zu einer Grundfunktion geworden. Unabhängig davon, ob wir Avatare, Bilder, Dokumente oder Videos hochladen, benötigen wir eine zuverlässige Möglichkeit, Dateien vom Computer des Benutzers auf den Server hochzuladen. In diesem Artikel erhalten Sie eine detaillierte Anleitung zur Verwendung von Vue, Axios und Element-UI zum Implementieren des Datei-Uploads. Was Axiosaxios ist, basiert auf einem Abschlussball

In Vue.js-Anwendungen wird häufig Axios verwendet. Axios ist eine leistungsstarke HTTP-Anfragebibliothek, mit der Sie problemlos asynchrone HTTP-Anfragen senden können. Bei der Verwendung von axios treten jedoch einige Fehler auf, darunter „TypeError: bindisnotafunction“. Dieser Fehler wird normalerweise dadurch verursacht, dass die Axios-Version nicht mit Vue.js kompatibel ist. Werfen wir einen Blick auf die Lösungen für diesen Fehler. Zuerst brauchen wir
