Re: [Cppcms-users] Cppcms-users Digest, Vol 26, Issue 8
Brought to you by:
artyom-beilis
From: 刘怀宇 <mys...@gm...> - 2011-09-08 09:24:37
|
Thanks for your reply! I found out that maybe it is just the Same Origin Policy related errors. I used your HTML example ,and deploy it with json_rpc service in one cppcms application. have a see at my config.js { "service" : { "api" : "http", "port" : 8080 }, "http" : { "script_names" : ["/jsonrpc","/html"] } } We add two applications into cppcms application pool as following: 1. cppcms::service srv(argc,argv); 2. srv.applications_pool().mount(cppcms::applications_factory<my_hello_world>() , cppcms::mount_point(std::string( "/html")) ); 3. srv.applications_pool().mount(cppcms::applications_factory<json_service>() , cppcms::mount_point(std::string( "/jsonrpc")) ); So there are two applications in the same service but different URI. I got the response from jsonrpc successfully by this method. But if I request the jsonrpc service from another computer by javascript ,it doesn't work. Is it related to the Same Origin Policy ? Is there any method to solve this problem? 2011/9/7 <cpp...@li...> > Send Cppcms-users mailing list submissions to > cpp...@li... > > To subscribe or unsubscribe via the World Wide Web, visit > https://lists.sourceforge.net/lists/listinfo/cppcms-users > or, via email, send a message with subject or body 'help' to > cpp...@li... > > You can reach the person managing the list at > cpp...@li... > > When replying, please edit your Subject line so it is more specific > than "Re: Contents of Cppcms-users digest..." > > > Today's Topics: > > 1. Can't get correct response from json rpc server when using > javascript (???) > 2. Re: Can't get correct response from json rpc server when > using javascript (Artyom Beilis) > > > ---------------------------------------------------------------------- > > Message: 1 > Date: Wed, 7 Sep 2011 16:44:52 +0800 > From: ??? <mys...@gm...> > Subject: [Cppcms-users] Can't get correct response from json rpc > server when using javascript > To: cpp...@li... > Message-ID: > <CAM...@ma... > > > Content-Type: text/plain; charset="iso-8859-1" > > Hello > There is a json rpc example in cppcms project. Now I want to send json_rpc > request using javascript , but it doesn't work. > I found that the Content-Type field of the HttpRequest message must be > "application/json" for cppcms application ,otherwise I got error messages > as follows " invalid content type " > And I tested successfully by python(in tests dir) and curl command > > 1.python: > > def test(name,A,B): > if A != B: > print "Error :" + name > print "-----Actual--" > print A,"---Expected--" > print B,"-------------" > sys.exit(1) > else: > print "Ok:"+name > > def test_status(h,stat): > if h.status != stat: > print "Status mistmatch:",h.status,"!=",stat > sys.exit(1) > > def test_valid(name,params,ans,method='POST'): > h=httplib.HTTPConnection('192.168.30.17:8080'); > headers = {"Content-type": "application/json"} > h.request(method,'/rpc',params,headers) > r=h.getresponse() > test(name,r.read(),ans) > > test_valid('sum','{"method" : "sum" , "params" : [ 1, 2 ], "id" : > 1}','{"id":1,"error":null,"result":3}') > > 2.curl command: > curl -i -X POST --header "Content-Type:application/json" -d > '{"method":"sum","params":[1,2],"id":1}' http://192.168.30.17:8080/rpc > > They both succeeded. > > But I can't get correct response by using javascript.The following code > has > been tested in IE8 , Chrome13 and firefox6.It only success in IE8. > > var xhr = new XMLHttpRequest(); > var rpcUrl = 'http://192.168.30.17:8080/rpc'; > var postData = '{"method":"sum","params":[1,2],"id":1}'; > > xhr.open("post", rpcUrl, true); > > xhr.setRequestHeader("Content-Type","application/json"); > > xhr.onreadystatechange = function() { > if (xhr.readyState === 4) { > if (xhr.status >= 200 && xhr.status < 300 || xhr.status === 304) { > alert(xhr.responseText) > } > } > } > xhr.send(postData); > > Maybe the problem is that I can't set the "Content-Type" as > "application/json" successfully in Chrome and Firefox. > > Do you have any experience about ajax? > Or just give me an idea! > -------------- next part -------------- > An HTML attachment was scrubbed... > > ------------------------------ > > Message: 2 > Date: Wed, 7 Sep 2011 03:02:34 -0700 (PDT) > From: Artyom Beilis <art...@ya...> > Subject: Re: [Cppcms-users] Can't get correct response from json rpc > server when using javascript > To: "cpp...@li..." > <cpp...@li...> > Message-ID: > <131...@we...> > Content-Type: text/plain; charset="utf-8" > > Actually I don't see any specific reason why wouldn't it work. > Are you sure you don't have Same Origin Policy related errors? > > I've added an HTML example of JSON RPC service in the json_rpc examples > directory: > > ?? > http://cppcms.svn.sourceforge.net/viewvc/cppcms/framework/trunk/examples/json_rpc/index.html?view=markup > > ? > Artyom Beilis > > > > >________________________________ > >From: ??? <mys...@gm...> > >To: cpp...@li... > >Sent: Wednesday, September 7, 2011 11:44 AM > >Subject: [Cppcms-users] Can't get correct response from json rpc server > when using javascript > > > > > >Hello?There is a json rpc example in cppcms project. Now I want to send > json_rpc request ?using javascript , but it doesn't work. > >?I found that the Content-Type field of the HttpRequest message must be > "application/json" for ?cppcms application ,otherwise I got error messages > as follows ?" invalid content type "? > >And I tested ?successfully by python(in tests dir) and curl command > > > > > >1.python: > > > > > >def test(name,A,B): > >? ? if A != B: > >? ? ? ? print "Error :" + name? > >? ? ? ? print "-----Actual--" > >? ? ? ? print A,"---Expected--" > >? ? ? ? print B,"-------------" > >? ? ? ? sys.exit(1) > >? ? else: > >? ? ? ? print "Ok:"+name > > > > > >def test_status(h,stat): > >? ? if h.status != stat: > >? ? ? ? print "Status mistmatch:",h.status,"!=",stat > >? ? ? ? sys.exit(1) > > > > > >def test_valid(name,params,ans,method='POST'): > >? ? h=httplib.HTTPConnection(' 192.168.30.17:8080'); > >? ? headers = {"Content-type": "application/json"} > >? ? h.request(method,'/rpc',params,headers) > >? ? r=h.getresponse() > >? ? test(name,r.read(),ans) > > > > > >test_valid('sum','{"method" : "sum" , "params" : [ 1, 2 ], "id" : > 1}','{"id":1,"error":null,"result":3}') > > > > > >2.curl command: > >?curl -i -X POST --header "Content-Type:application/json" -d > '{"method":"sum","params":[1,2],"id":1}' http://192.168.30.17:8080/rpc > > > > > >They both succeeded. > > > > > >But I can't get correct response by using ?javascript.The following code > has been tested in IE8 , Chrome13 and firefox6.It only success in IE8. > > > > > >var xhr = new XMLHttpRequest(); > >var rpcUrl = 'http://192.168.30.17:8080/rpc'; > >var postData = '{"method":"sum","params":[1,2],"id":1}'; > > > >xhr.open("post", rpcUrl, true); > > > >xhr.setRequestHeader("Content-Type","application/json"); > > > >xhr.onreadystatechange = function() { > >if (xhr.readyState === 4) { > >if (xhr.status >= 200 && xhr.status < 300 || xhr.status === 304) { > >alert(xhr.responseText) > >} > >} > >} > >xhr.send(postData);? > > > > > >Maybe the problem is that I can't set the "Content-Type" as > "application/json" successfully in Chrome and Firefox. > > > > > >Do you have any experience about ajax? > >Or just give me an idea! > > > > > > > > > > >------------------------------------------------------------------------------ > >Using storage to extend the benefits of virtualization and iSCSI > >Virtualization increases hardware utilization and delivers a new level of > >agility. Learn what those decisions are and how to modernize your storage > >and backup environments for virtualization. > >http://www.accelacomm.com/jaw/sfnl/114/51434361/ > >_______________________________________________ > >Cppcms-users mailing list > >Cpp...@li... > >https://lists.sourceforge.net/lists/listinfo/cppcms-users > > > > > > > -------------- next part -------------- > An HTML attachment was scrubbed... > > ------------------------------ > > > ------------------------------------------------------------------------------ > Using storage to extend the benefits of virtualization and iSCSI > Virtualization increases hardware utilization and delivers a new level of > agility. Learn what those decisions are and how to modernize your storage > and backup environments for virtualization. > http://www.accelacomm.com/jaw/sfnl/114/51434361/ > > ------------------------------ > > _______________________________________________ > Cppcms-users mailing list > Cpp...@li... > https://lists.sourceforge.net/lists/listinfo/cppcms-users > > > End of Cppcms-users Digest, Vol 26, Issue 8 > ******************************************* > |