簡體   English   中英

Ajax請求來自不同域的Restful API

[英]Ajax request to restful api from different domain

我有一個寧靜的api,當我從郵遞員打電話時可以正常工作。 在郵遞員上,我給出以下配置以獲取答案:-POST:“ https://www.example.net/API/MyFunction ”我沒有授權。 -Headers:內容類型:application / json,用戶名:myusername,密碼:mypassword -Body raw

{"firstparameter":"firtparameter_value"}

我有一個純HTML域,我想在其中進行一些調用並從此api提供數據。 因此,我向jquery-3.3.1.js添加了一個鏈接,並創建了一個ajax調用。 我試圖按照此指南https://www.html5rocks.com/zh-CN/tutorials/cors/進行操作,但是當我撥打電話時,出現了以下錯誤提示。 Ajax呼叫:

 var username = 'myusername';
 var password = 'mypassword';
$.ajax({

    type: 'POST',
    dataType: "jsonp",

    url: 'https://www.example.net/API/MyFunction',


    contentType: 'text/plain',
    crossDomain: true,
    data:{"firstparameter":"firtparameter_value"},
    xhrFields: {

        withCredentials: false
    },

    headers: {


        username: username,
        password: password
    },

    success: function () {


    error: function () {

    }
});

我得到的錯誤是:

GET https://www.example.net/API/MyFunction/?callback=jQuery33104247946565223606_1541427224545&firstparameter=firtparameter_value&_=1541427224546 net :: ERR_ABORTED 405(不允許使用方法)

 type: 'POST', dataType: "jsonp", 

JSONP請求通過注入發出GET請求的<script src>元素來工作。 當您使用JSONP時,jQuery將忽略method屬性。

無法使用JSONP發出POST請求。

REST API不太可能返回JSONP(這是在我們擁有CORS之前的糟糕日子里解決Same Origin Policy的一種方法,就像CORS一樣,必須在服務器上進行設置)。 您的API當然不會,因為它告訴您GET方法(JSONP必需)是不允許的。

dataType設置正確的值。


您還有其他問題,但它們與錯誤消息無關。

您說過“ -Headers: Content-Type : application/json ”,但隨后在JS中使用“ contentType: 'text/plain' “ —使用正確的內容類型。

您說的是“ data:{"firstparameter":"firtparameter_value"} ”,但是jQuery會以URL格式而不是JSON格式data:{"firstparameter":"firtparameter_value"}進行編碼。 您需要使用JSON.stringify將其顯式編碼為JSON。

每當您嘗試使用錯誤的方法調用API函數(例如,使用Get Ajax調用來調用POST函數)時,都會發生該錯誤。

您需要確保您的后端具有您從ajax調用為POST的方法

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM