[英]JSON-RPC is not working with $http.POST
我正在開發一個離子混合移動應用程序並嘗試在 JSON-RPC 服務中發布數據,但我收到“ 500 內部服務器錯誤”
var req = {
url: 'http://192.118.1.214:8080/remote/json-rpc',
headers: {
'content-type': 'application/json;charset=utf-8',
'cache-control': 'no-cache, no-store, must-revalidate, max-age=0'
},
data: { jsonrpc: "2.0", id: 2, method: "HDAccess/getDevices", params: [null] }
}
$http(req).then(function (res) { alert(res); return res; },
function (er) { alert(er); });
這是來自 webconsole 的請求詳細信息。 我使用了 chrome CORS 插件來避免“CORS”問題
Request URL:http://192.118.1.214:8080/remote/json-rpc
Request Method:OPTIONS
Status Code:500 Internal Server Error
Remote Address:192.118.1.214:8080
Response Headers
view source
cache-control:no-cache, no-store, must-revalidate, max-age=0
content-length:810
content-type:text/html; charset=UTF-8
date:Tue, 01 Mar 2016 08:00:50 GMT
pragma:no-cache
Request Headers
view source
Accept:*/*
Accept-Encoding:gzip, deflate, sdch
Accept-Language:en-GB,en-US;q=0.8,en;q=0.6
Access-Control-Request-Headers:accept, cache-control, content-type
Access-Control-Request-Method:GET
Connection:keep-alive
Host:192.118.1.214:8080
Origin:http://evil.com/
Referer:http://localhost:8100/
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36
我在 POSTMAN 擴展中使用了相同的 url 和 post 方法並得到了工作,但它在上面的代碼中不起作用。
在下面找到 POSTMAN 輸入
我有三個疑問:
1.為什么上述請求細節中沒有提到數據。
2.為什么該方法顯示為“選項”但我使用的是“POST”方法
3.為什么它不能通過代碼工作,但在 chrome POSTMAN 擴展客戶端中工作正常
請指導我解決這個問題。
為什么上述請求詳細信息中未提及數據。
如果服務器以許可響應 OPTIONS 請求,則數據將位於瀏覽器將發送的 POST/PUT 請求中。
為什么該方法顯示為“選項”但我使用的是“POST”方法
由於您使用 JSON 格式的正文發送請求,因此您正在觸發預檢 OPTIONS 請求。
另請參閱為什么我收到 OPTIONS 請求而不是 GET 請求?
我使用了 chrome CORS 插件來避免“CORS”問題
...它似乎無法處理 OPTIONS 請求,至少在服務器響應500 Internal Server Error
。
修復您的服務器,使其能夠響應 OPTIONS 請求。
為什么它不能通過代碼工作,但在 chrome POSTMAN 擴展客戶端中工作正常
因為當您使用 Postman 時,沒有涉及第三方,因此無需擔心信任問題。 另請參閱XMLHttpRequest 無法加載 https://www.[website].com/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.