JSON-RPC无法使用$ http.POST

时间:2016-04-19 12:13:13

标签: javascript angularjs ionic-framework xmlhttprequest

我正在开发离子混合移动应用并试图在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输入

enter image description here

我有三个疑问:

1.为什么上述请求细节中没有提到数据。

2.为什么该方法显示为“选项”,但我使用“POST”方法

3.为什么它不能通过代码工作,但在chrome POSTMAN扩展客户端

中工作正常

请指导我解决这个问题。

1 个答案:

答案 0 :(得分:1)

  

为什么上述请求详细信息中未提及数据。

如果服务器在有权限的情况下响应OPTIONS请求,则数据将在浏览器发送的POST / PUT请求中。

  

为什么该方法显示为“选项”,但我使用“POST”方法

由于您发送的是带有JSON格式正文的请求,因此您正在触发预检OPTIONS请求。

另见Why am I getting an OPTIONS request instead of a GET request?

  

我使用chrome CORS插件来避免“CORS”问题

...它似乎无法处理OPTIONS请求,至少在服务器以500 Internal Server Error响应时不会。

修复您的服务器,以便它可以响应OPTIONS请求。

  

为什么它不能通过代码工作,但在chrome POSTMAN扩展客户端

中工作正常

因为当你使用邮递员时,没有涉及第三方,因此不必担心信任问题。另请参阅XMLHttpRequest cannot load https://www.[website].com/