[英]Sending a POST request from JavaScript not passing in JSON params
我正在嘗試從我的網站調用以python編寫的Firebase Cloud函數。 當我使用curl
從命令行調用該函數時,該函數可以完美運行,但是,當我嘗試從JavaScript進行此操作時,卻遇到了以下問題。 本質上,JSON參數沒有被接收。
我如何用JavaScript打電話
var xmlhttp = new XMLHttpRequest();
var theUrl = "https://us-central1-scan2checkout.cloudfunctions.net/registerUser";
xmlhttp.open("POST", theUrl,true);
xmlhttp.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
xmlhttp.send('{"auth":"ac_Fn0GuKLhuh8yltMVlmFeBkQpdpaTrqug"}');
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == XMLHttpRequest.DONE) {
console.log(xmlhttp.responseText);
}
}
雲功能
def registerUser(request):
print(request) # Printing '<Request 'http://us-central1-scan2checkout.cloudfunctions.net/' [OPTIONS]>'
print(request.json) # Printing 'NONE' :(
auth = request.json['auth'] # Issue is here
# ... SOME STUFF ...
return {...},201
使用命令行時的工作方式
time curl -v -X POST -d '{"auth":"ac_Fn0GuKLhuh8yltMVlmFeBkQpdpaTrqug"}' -H "Content-type: application/json" https://us-central1-scan2checkout.cloudfunctions.net/registerUser
如果您現在運行此程序,則可能會得到正確的“授權碼已過期”之類的信息。
要處理此請求,您將需要在Cloud Function中設置適當的Access-Control-Allow- *標頭以匹配您要接受的請求。 請查看用Python編寫的CORS函數的示例 。
您會注意到,CORS由兩個請求組成:一個預檢OPTIONS請求和一個緊隨其后的主請求。
預檢請求包含以下標頭:
讓我知道是否有幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.