ในฐานะนักพัฒนาส่วนหน้า เรามักจะเชื่อมต่อกับส่วนหลัง อย่างไรก็ตาม เรามักจะประสบปัญหาข้ามโดเมนในระหว่างกระบวนการเชื่อมต่อ ดังนั้นเราจะแก้ไขได้อย่างไร
บทความนี้ใช้ angualr
เพื่ออธิบายหัวข้อการเชื่อมต่อ api
ของตัวแทน [บทช่วยสอนที่เกี่ยวข้องที่แนะนำ: "บทช่วยสอนเชิงมุม"]
ก่อนอื่น มาทำความเข้าใจว่าข้ามโดเมนคืออะไร
ความเข้าใจง่ายๆ เกี่ยวกับข้ามโดเมน
: เมื่อ url
ของสามส่วน任意一个
ของ协议、域名(ip地址)、端口
ของคำขอและหน้าปัจจุบันแตกต่างกัน แสดงว่าเป็นข้ามโดเมน
ยกตัวอย่างไซต์ของฉัน https://jimmyarea.com
:
ที่อยู่ที่ร้องขอ | เป็น | แบบข้ามโดเมนหรือ |
---|---|---|
ไม่ | jimmyarea.com | มี |
ที่ | อยู่ | ที่ |
แตก | ต่าง | กัน ที่อยู่และหมายเลขพอร์ต |
พร็อกซี
ในขณะนี้ เราสามารถใช้พร็อกซีเพื่อร่วมกันแก้ไขข้อบกพร่องที่อยู่ api
ของสภาพแวดล้อมที่แตกต่างกัน
ขั้นแรก เราสร้างไฟล์ใหม่ proxy.conf.json
ในไดเร็กทอรีรากของโปรเจ็กต์
เราใช้คำขออินเทอร์เฟซ https://jimmyarea.com/api/public/article?page=-1
เป็นตัวอย่าง:
{ "/api": { "target": "https://jimmyarea.com/", "changeOrigin": จริง, "ปลอดภัย": เท็จ "pathRewrite": { "^/api": "/api" - - }
target
คือที่อยู่ของเอเจนต์ pathRewrite
คือการเขียนคำนำหน้าของเอเจนต์ใหม่
หลังจากกรอกไฟล์พรอกซีเสร็จแล้ว คุณจะต้องเปิดใช้งานพรอกซี เราเพิ่มบรรทัดคำสั่งอีกหนึ่งบรรทัดใน package.json
ซึ่งระบุว่าใช้สำหรับการดีบักในสภาพแวดล้อมการพัฒนา
"สคริปต์": { "dev": "ng ให้บริการ --proxy-config=proxy.conf.json", }
ดำเนินการ npm run dev
เพื่อเริ่มโปรเจ็กต์และนำเอเจนต์มา ทุกครั้งที่ไฟล์พร็อกซีมีการเปลี่ยนแปลง คุณต้องรีสตาร์ทบรรทัดคำสั่ง
เพื่อตรวจสอบว่า
เราได้สร้างบริการ article
ใหม่แล้ว เนื้อหาของไฟล์ article.service.ts
เป็นดังนี้:
นำเข้า { Injectable } จาก '@เชิงมุม/core' ; // นำเข้าไคลเอ็นต์ http { HttpClient } จาก '@ เชิงมุม/common/http' @ฉีด({ ให้ไว้ใน: 'ราก' - ArticleService คลาสส่งออก { ตัวสร้าง ( http ส่วนตัว: HttpClient - // รับรายการบทความ getArticleList() { กลับ this.http.get('/api/public/article', { // ประเภทการส่งคืน responseType: 'json', //ขอพารามิเตอร์พารามิเตอร์: { หน้า: -1 - - - }
สำหรับคำขอข้างต้น ที่อยู่บนเพจคือ http://localhost:4200/api/public/article?page=-1
ที่จริงแล้ว ที่อยู่ที่เข้าถึงคือ https://jimmyarea.com/api/public/article?page=-1
. เราสามารถตรวจสอบได้โดยการเรียกมันใน user-list.component.ts
:
ngOnInit():void { this.articleService.getArticleList().สมัครสมาชิก({ ถัดไป: (ข้อมูล: ใด ๆ ) => { console.log (ข้อมูล) - ข้อผิดพลาด: () => {} - - }
หลังจากที่โปรแกรมทำงาน คุณจะเห็นคำขอเครือข่ายต่อไปนี้บนคอนโซล:
เยี่ยมมากพี่ชาย เราสามารถพร็อกซีที่อยู่ที่กำหนดโดยแบ็กเอนด์และแก้ไขข้อบกพร่องได้อย่างสมบูรณ์แบบ และพร็อกซีสามารถพร็อกซีได้มากกว่าหนึ่งที่อยู่ ผู้อ่านสามารถเขียนที่อยู่พร็อกซีหลายรายการเพื่อตรวจสอบได้~
[สิ้นสุด]