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 时,没有第三方参与,因此无需担心信任问题。另见