JSON-RPC 不适用于 $http.POST
JSON-RPC is not working with $http.POST
我正在开发离子混合移动应用程序并尝试 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.Why以上请求详情中未提及的数据
2.Why 方法显示为 "Option" 但我使用的是 "POST" 方法
3.why 它不是通过代码工作,而是在 chrome POSTMAN 扩展客户端中工作正常
请指导我解决这个问题。
Why the data is not mentioned in the above request details.
数据将在 POST/PUT 请求中,如果服务器以允许的方式响应 OPTIONS 请求,浏览器将发送该请求。
Why the method is showed as "Option" but i am using "POST" method
由于您发送的请求带有 JSON 格式的正文,因此您正在触发预检 OPTIONS 请求。
另见 Why am I getting an OPTIONS request instead of a GET request?
I have used chrome CORS plugin to avoid "CORS" issue
…它似乎无法处理 OPTIONS 请求,至少在服务器响应 500 Internal Server Error
.
时不能
修复您的服务器,使其能够响应 OPTIONS 请求。
why is it not working by code but working fine in the chrome POSTMAN extention client
因为当您使用 Postman 时,没有第三方参与,因此无需担心信任问题。另见
我正在开发离子混合移动应用程序并尝试 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.Why以上请求详情中未提及的数据
2.Why 方法显示为 "Option" 但我使用的是 "POST" 方法
3.why 它不是通过代码工作,而是在 chrome POSTMAN 扩展客户端中工作正常
请指导我解决这个问题。
Why the data is not mentioned in the above request details.
数据将在 POST/PUT 请求中,如果服务器以允许的方式响应 OPTIONS 请求,浏览器将发送该请求。
Why the method is showed as "Option" but i am using "POST" method
由于您发送的请求带有 JSON 格式的正文,因此您正在触发预检 OPTIONS 请求。
另见 Why am I getting an OPTIONS request instead of a GET request?
I have used chrome CORS plugin to avoid "CORS" issue
…它似乎无法处理 OPTIONS 请求,至少在服务器响应 500 Internal Server Error
.
修复您的服务器,使其能够响应 OPTIONS 请求。
why is it not working by code but working fine in the chrome POSTMAN extention client
因为当您使用 Postman 时,没有第三方参与,因此无需担心信任问题。另见