[英]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.