简体   繁体   中英

JSON-RPC is not working with $http.POST

I am developing an ionic hybrid mobile app and trying to post data in JSON-RPC service but I am getting " 500 internal server error "

        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); });  

It is the request details from webconsole. I have used chrome CORS plugin to avoid "CORS" issue

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

I have used the same url and post method in POSTMAN extension and got worked but it is not worked in the above code.

Find the POSTMAN inputs below

在此处输入图片说明

I have three doubts:

1.Why the data is not mentioned in the above request details.

2.Why the method is showed as "Option" but i am using "POST" method

3.why is it not working by code but working fine in the chrome POSTMAN extention client

Please guide me to solve this issue.

Why the data is not mentioned in the above request details.

The data would be in the POST/PUT request that the browser would send if the server responded to the OPTIONS request with permission.

Why the method is showed as "Option" but i am using "POST" method

Since you are sending a request with a JSON formatted body, you are triggering a preflight OPTIONS request.

See also Why am I getting an OPTIONS request instead of a GET request?

I have used chrome CORS plugin to avoid "CORS" issue

… it doesn't appear to be able to handle OPTIONS requests, at least not when the server responds with a 500 Internal Server Error .

Fix your server so it can respond to OPTIONS requests.

why is it not working by code but working fine in the chrome POSTMAN extention client

Because when you use Postman, there isn't a third party involved, so there are no trust issues to worry about. See also XMLHttpRequest cannot load https://www.[website].com/

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM