I need to send an AJAX request to, for example, port 8080 where a daemon is running there.
相关问题
- Is there a limit to how many levels you can nest i
- How to toggle on Order in ReactJS
- Carriage Return (ASCII chr 13) is missing from tex
- How to fix IE ClearType + jQuery opacity problem i
- void before promise syntax
This breaks the Same origin policy. You cannot use a different port, even when using the same domain.
You can use JSONP as Doug suggested.
Or else, as another possible workaround, you could set up a very simple reverse proxy (using mod_proxy if you are on Apache). This would allow you to use relative paths in your AJAX request, while the HTTP server would be acting as a proxy to any "remote" location.
The fundamental configuration directive to set up a reverse proxy in mod_proxy is the ProxyPass. You would typically use it as follows:
In this case, you would request
/ajax/test.xml
with jQuery, but in fact the server would serve this by acting as a proxy tohttp://www.localhost:8080/test.xml
internally.If you are using IIS, you may want to use the Managed Fusion URL Rewriter and Reverse Proxy to set up a reverse proxy.
You cannot
POST
information cross domain, subdomain, or port number. You can however use JSONP if you have access to both the daemon and the requesting site. If data needs to be returned, then thedaemon
needs to support acallback
query parameter and return it properly formatted.Pass the information to the daemon:
Now just make sure your daemon handles the
callback
parameter. For instance, ifcallback=mycallback
the return from the daemon (the only thing written to the page) should look like this:For an key/value pairs:
For an array:
If you do not have a JSONP or similar mechanism in place, you cannot communicate cross domain using jQuery.
This counts as a different origin, even though you have it on the same box, just different port.
If you are targetting mostly new browsers like FireFox 3.5 and up, you can try to add
Access-Control
headers to your application in another port and allow to call from your default app pool. Information about access control headers can be found here: https://developer.mozilla.org/en/HTTP_access_controlIE also implements it (again, in using a different ACTIVEX control, why so?): http://blogs.msdn.com/ie/archive/2009/01/14/completing-access-control-support-for-xdomainrequest.aspx and http://msdn.microsoft.com/en-us/library/cc288060(VS.85).aspx