การทำคำขอ HTTP โดยใช้เครื่องมือนักพัฒนาซอฟต์แวร์ของ Chrome


206

มีวิธีในการสร้างคำขอ HTTP โดยใช้เครื่องมือ Chrome Developer โดยไม่ใช้ปลั๊กอินเช่น POSTER หรือไม่?


1
คุณต้องการส่งคำขอข้ามโดเมนหรือในโดเมนเดียวกับที่คุณเปิดเครื่องมือสำหรับนักพัฒนา
Lukas

6
สำหรับทุกคนที่ต้องการคุณสมบัตินี้ - ติดดาว Chromium ฉบับนี้: code.google.com/p/chromium/issues/…
Ivan Zuzak

1
ทั้งหมดเป็นคำตอบที่มีประโยชน์แค่อยากจะเพิ่มเครื่องมือที่ผมพบว่ามีประโยชน์สวยส่วนที่เหลือไคลเอ็นต์ขั้นสูง การใช้วิธีนี้สามารถช่วยประหยัดเวลาได้มากในระยะยาวหากมีใครที่จะขอ API หลาย ๆ ครั้ง
Sagar Ranglani

6
Firefox เป็นตัวเลือกที่ดีกว่าสำหรับสิ่งนี้ เพียงคลิกขวาที่คำขอและส่งหรือแก้ไขและส่งอีกครั้ง
eusoubrasileiro

@eusoubrasileiro: ขอบคุณ ปุ่มแก้ไขและส่งอีกครั้งในแท็บเครือข่ายใน Firefox เพื่อส่งคำขอเป็นคุณลักษณะที่ดีจริงๆ หวังว่าใครบางคนจะขอให้เพิ่มมันในโครเมี่ยมเช่นกัน
firstpostcommenter

คำตอบ:


186

เนื่องจากFetch APIได้รับการสนับสนุนโดย Chrome (และเบราว์เซอร์อื่น ๆ ส่วนใหญ่) ตอนนี้จึงเป็นเรื่องง่ายที่จะทำการร้องขอ HTTP จากคอนโซล devtools

เพื่อรับไฟล์ JSON เช่น:

fetch('https://jsonplaceholder.typicode.com/posts/1')
  .then(res => res.json())
  .then(console.log)

หรือเพื่อโพสต์ทรัพยากรใหม่:

fetch('https://jsonplaceholder.typicode.com/posts', {
  method: 'POST',
  body: JSON.stringify({
    title: 'foo',
    body: 'bar',
    userId: 1
  }),
  headers: {
    'Content-type': 'application/json; charset=UTF-8'
  }
})
.then(res => res.json())
.then(console.log)

Chrome Devtools ยังรองรับไวยากรณ์ async / await ใหม่ (แม้ว่าการรอตามปกติสามารถใช้ได้ภายในฟังก์ชัน async):

const response = await fetch('https://jsonplaceholder.typicode.com/posts/1')
console.log(await response.json())

ขอให้สังเกตว่าคำขอของคุณจะอยู่ภายใต้นโยบายกำเนิดเดียวกันเช่นเดียวกับคำขอ HTTP อื่น ๆ ในเบราว์เซอร์ดังนั้นจึงควรหลีกเลี่ยงคำขอข้ามแหล่งกำเนิดหรือตรวจสอบให้แน่ใจว่าเซิร์ฟเวอร์ตั้งค่าส่วนหัว CORS ที่อนุญาตคำขอของคุณ

ใช้ปลั๊กอิน (คำตอบเก่า)

นอกเหนือจากคำแนะนำที่โพสต์ก่อนหน้านี้ฉันพบว่าปลั๊กอินPostmanสำหรับ Chrome ทำงานได้ดีมาก อนุญาตให้คุณตั้งค่าส่วนหัวและพารามิเตอร์ URL ใช้การตรวจสอบความถูกต้อง HTTP บันทึกคำขอที่คุณเรียกใช้บ่อยๆ


3
เนื่องจาก op ยอมรับคำตอบโดยใช้บุรุษไปรษณีย์: หากคุณคลิกขวาที่คำขอในเครื่องมือ dev และ "คัดลอกเป็น cURL" คุณสามารถนำเข้าคำสั่ง cURL ไปยังบุรุษไปรษณีย์เพื่อส่ง / แก้ไขคำขอ ดู: getpostman.com/docs/postman/collections/data_formats -> "กำลังนำเข้าเป็น cURL"
dhfsk

1
จะโพสต์คำขอได้อย่างไร?
Nuhman

7
@Nuhman Fetch รับอาร์กิวเมนต์ที่สองซึ่งคุณสามารถกำหนดค่าคำขอได้fetch("/echo/json/", { method: "POST", body: data })
Christofer Eliasson

1
โปรดทราบว่าอาจเป็นไปได้ที่จะคัดลอกเป็นการดึงคำขอใด ๆ จากประวัติเครือข่าย Chrome Dev Tools
Vadzim

1
@mathtick มีเป็นตัวเลือกคำขอคุณสามารถใช้:mode fetch("/echo/json/", { method: 'POST', mode: 'no-cors' }โปรดทราบว่าโหมด: "no-cors" อนุญาตเฉพาะส่วนหัวที่ จำกัด ในคำขอ ข้อมูลเพิ่มเติมเกี่ยวกับการใช้การดึงข้อมูลและไม่มีสาย
Christofer Eliasson

154

หากคุณต้องการแก้ไขและออกคำร้องขอที่คุณบันทึกไว้ในแท็บเครือข่ายของเครื่องมือสำหรับนักพัฒนาซอฟต์แวร์ Chrome:

  • คลิกขวาNameที่คำขอ
  • เลือก Copy > Copy as cURL
  • วางในบรรทัดคำสั่ง (คำสั่งรวมถึงคุกกี้และส่วนหัว)
  • แก้ไขคำขอตามต้องการและเรียกใช้

ป้อนคำอธิบายรูปภาพที่นี่


11
Firefox ช่วยให้คุณสามารถแก้ไขการโทรก่อนที่จะเล่นซ้ำ แต่ไม่มีตัวเลือกดังกล่าวในโครเมี่ยมดังนั้นคำตอบข้างต้นจึงเป็นหนทางไป
Tofeeq

3
ด้วย chrome 63+ การวาง CURL ในคอนโซลไม่ทำงาน
Ravi Parekh

2
@RaviParekh ฉันไม่คิดว่าเขาหมายถึงคอนโซล Chrome เขาหมายถึงบรรทัดคำสั่งระบบปฏิบัติการ
Korayem

4
คัดลอกเป็นการดึงข้อมูลอนุญาตให้ออกคำร้องขอที่เปลี่ยนแปลงใหม่ได้โดยตรงจากคอนโซล Chrome Dev Tools และเป็นทางเลือกที่ทำงานได้สำหรับผู้ที่ไม่มี cURL หรือปรารถนาที่จะใส่ใจ
Vadzim

1
แต่การใช้ขดบางครั้งผลลัพธ์ไม่เหมือนกัน ฉันมาที่นี่เพื่อทราบว่าฉันสามารถขอได้จากเบราว์เซอร์ ใช้จาวาสคริปต์ของเบราว์เซอร์ มันช่วยให้ฉันทำซ้ำปัญหา CORS สิ่งที่ขดจาก terminal ของฉันไม่ควรให้ความกระจ่างฉัน
Garry Dias

32

ฉันรู้ว่าโพสต์เก่า ... แต่มันอาจจะมีประโยชน์ที่จะออกจากที่นี่

เบราว์เซอร์สมัยใหม่สนับสนุนFetch APIแล้ว

คุณสามารถใช้สิ่งนี้:

fetch("<url>")
    .then(data => data.json()) // could be .text() or .blob() depending on the data you are expecting
    .then(console.log); // print your data

ps: มันจะทำการตรวจสอบ CORS ทั้งหมดเนื่องจากเป็นการปรับปรุง XmlHttpRequestการตรวจสอบเพราะมันเป็นที่ดีขึ้น


13

หากหน้าเว็บของคุณมี jquery ในหน้าของคุณคุณสามารถเขียนลงในคอนโซลนักพัฒนาของ Chrome ได้:

$.get(
    "somepage.php",
    {paramOne : 1, paramX : 'abc'},
    function(data) {
       alert('page content: ' + data);
    }
);

มันเป็นวิธี jquery ของการทำมัน!


14
สิ่งนี้ถือว่าหน้าเว็บจะใช้ jQuery
mikemaccana

2
โปรดจำไว้ว่านี่เป็นเพียงการGETร้องขอหากคุณต้องการทำคำขอประเภทอื่นคุณอาจต้องการใช้ประโยชน์จาก$.ajax
aksu

@mikemaccana คุณสามารถโหลด jQuery ลงในหน้าใดก็ได้ผ่านทางคอนโซล
nehem

1
ถูกใจสิ่งนี้var script = document.createElement("script"); script.src = "http://ajax.aspnetcdn.com/ajax/jquery/jquery-1.9.0.js"; document.body.appendChild(script);
nehem

1
@itsneo คำตอบที่ถูกต้องตรงจุด! วิธีโหลด jQuery หากหน้าเว็บที่กำลังเข้าถึงยังไม่มีอยู่ จากนั้นคุณสามารถใช้ $ .ajax หรือเทียบเท่าโดยไม่จำเป็นต้องใช้ปลั๊กอิน
Renato Chencinski

12

ขยายบน @dhfsk คำตอบ

นี่คือขั้นตอนการทำงานของฉัน

  1. จาก Chrome DevTools ให้คลิกขวาที่คำขอที่คุณต้องการจัดการ> Copy as cURL Chrome DevTools คัดลอกเป็น cURL

  2. เปิดบุรุษไปรษณีย์

  3. คลิกImportที่มุมบนซ้ายแล้วPaste Raw Text บุรุษไปรษณีย์วางข้อความดิบ cURL จาก Chrome

7

หากคุณต้องการทำ POST จากโดเมนเดียวกันคุณสามารถแทรกฟอร์มลงใน DOM โดยใช้เครื่องมือนักพัฒนาซอฟต์แวร์และส่งที่:

แทรกฟอร์มลงในเอกสาร


4

ฉันโชคดีที่สุดที่รวมคำตอบสองข้อไว้ด้านบน นำทางไปยังไซต์ใน Chrome จากนั้นค้นหาคำขอบนแท็บเครือข่ายของ DevTools คลิกขวาที่คำขอและคัดลอก แต่คัดลอกเป็นการดึงข้อมูลแทน cURL คุณสามารถวางรหัสการเรียกโดยตรงในคอนโซล DevTools และแก้ไขแทนการใช้บรรทัดคำสั่ง


3
อย่าอ้างว่าเป็น 'คำตอบสองข้อด้านบน' เนื่องจากอาจมีการเปลี่ยนแปลงเมื่อ upvoting / downvoting
Urosh T.

4

ในการรับคำขอด้วยส่วนหัวให้ใช้รูปแบบนี้

   fetch('http://example.com', {
      method: 'GET',
      headers: new Headers({
               'Content-Type': 'application/json',
               'someheader': 'headervalue'
               })
    })
    .then(res => res.json())
    .then(console.log)

2

หากคุณใช้ jquery บนเว็บไซต์ของคุณคุณสามารถใช้สิ่งนี้คอนโซลของคุณ

$.post(
    'dom/data-home.php',
    {
    type : "home", id : "0"
    },function(data){
        console.log(data)
    })
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>


1

ทำให้ง่ายขึ้นหากคุณต้องการให้คำขอใช้บริบทการสืบค้นเช่นเดียวกับหน้าเว็บที่คุณกำลังดูอยู่แล้วในคอนโซล Chrome ให้ทำดังนี้

window.location="https://www.example.com";

1

$.post(
    'dom/data-home.php',
    {
    type : "home", id : "0"
    },function(data){
        console.log(data)
    })
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>


1
คุณควรอธิบายคำตอบของคุณไม่ใช่แค่โพสต์โค้ดแบบสุ่ม
Jakub Muda
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.