Muszę wysłać żądanie AJAX do, na przykład, portu 8080, w którym działa demon.Jak wysłać żądanie AJAX do innego portu z jQuery?
Odpowiedz
Nie można uzyskać informacji o domenie, subdomenie lub numerze portu. Możesz jednak użyć JSONP, jeśli masz dostęp zarówno do demona i żądającej witryny. Jeśli dane muszą zostać zwrócone, wówczas daemon
musi obsługiwać parametr zapytania callback
i zwracać go poprawnie sformatowany.
przekazać te informacje do demona:
$.getJSON('http://domain.com:8080/url/here?callback=?', {
key: 'value',
otherKey: 'otherValue'
}, function(data){
// Handles the callback when the data returns
});
Teraz wystarczy upewnić się, że demon obsługuje parametr callback
. Na przykład, jeśli callback=mycallback
powrocie z demonem (jedyną rzeczą pisemnej do strony) powinien wyglądać następująco:
Za dodatkową par klucz/wartość:
mycallback({'returnkey':'returnvalue', 'other':'data' });
na tablicy:
mycallback([1,2,3]);
Jeśli nie masz mechanizmu JSONP lub podobnego, nie możesz komunikować się między domenami za pomocą jQuery.
To łamie Same origin policy. Nie możesz użyć innego portu, nawet jeśli używasz tej samej domeny.
Możesz użyć JSONP jako sugerowanego Doug.
Albo, jako inne możliwe obejście, można ustawić bardzo prosty reverse proxy (używając mod_proxy, jeśli jesteś na Apache). Umożliwi to korzystanie ze ścieżek względnych w żądaniu AJAX, podczas gdy serwer HTTP będzie pełnić rolę proxy dla dowolnej "zdalnej" lokalizacji.
Podstawową dyrektywą konfiguracyjną do ustawienia odwrotnego proxy w mod_proxy jest ProxyPass. byś zazwyczaj używają go w następujący sposób:
ProxyPass /ajax/ http://www.localhost:8080/
w tym przypadku byłoby poprosić /ajax/test.xml
z jQuery, ale w rzeczywistości serwer służyłoby to działając jako pełnomocnik do http://www.localhost:8080/test.xml
wewnętrznie.
Jeśli korzystasz z IIS, możesz użyć funkcji Managed Fusion URL Rewriter and Reverse Proxy do skonfigurowania odwrotnego proxy.
+1 Za fantastyczną odpowiedź. Odpowiedziałem na napisaną odpowiedź "bla bla bla", a ty dostarczyłeś bardzo realistyczne rozwiązanie. Dzięki, Daniel! –
Och, proxy spowoduje dodatkowe przetwarzanie po stronie serwera.Tak, wybiorę jsonP – user198729
Byłem drapanie się na cały dzień próbując zrozumieć, dlaczego nie mogłem opublikować danych w portach, zanim znalazłem to. Dzięki. – screenm0nkey
To liczy się jako inne pochodzenie, nawet jeśli masz je na tym samym polu, tylko na innym porcie.
Jeśli kierujesz reklamy głównie na nowe przeglądarki, takie jak FireFox 3.5 i nowsze, możesz spróbować dodać nagłówki Access-Control
do swojej aplikacji w innym porcie i zezwolić na połączenia z domyślnej puli aplikacji. Informacje o nagłówkach kontroli dostępu można znaleźć tutaj: https://developer.mozilla.org/en/HTTP_access_control
IE implementuje go też (znów w użyciu innego ActiveX Control, dlaczego tak jest?): http://blogs.msdn.com/ie/archive/2009/01/14/completing-access-control-support-for-xdomainrequest.aspx i http://msdn.microsoft.com/en-us/library/cc288060(VS.85).aspx
- 1. Jak śledzić żądanie jQuery AJAX?
- 2. Żądanie ajax jQuery anulowane spowalnia bieżące żądanie
- 3. Jak wysłać plik do portu com1?
- 4. Żądanie ajax jQuery działa, to samo żądanie AngularJS ajax nie
- 5. Jak anulować/anulować żądanie jQuery AJAX?
- 6. Jak wysłać tokenu z żądania AJAX z jQuery
- 7. Jak mogę debugować żądanie ajax jQuery?
- 8. Jak wysłać żądanie POST?
- 9. Jak wysłać żądanie SOAP?
- 10. Jak wysłać klucz dynamiczny i wartość zarówno w Ajax jQuery?
- 11. jquery ajax wysłać ciąg jako POST
- 12. Jak wyśmiać żądanie AJAX?
- 13. Jak wysłać żądanie do "j_spring_security_check" od kontrolera
- 14. Jak wysłać żądanie do API zewnętrznym
- 15. Jak wysłać żądanie GET z PHP?
- 16. jak wysłać żądanie http z linii poleceń
- 17. Jak wysłać żądanie Oautha z python-oauth2
- 18. Żądanie jQuery AJAX zawodzi w IE
- 19. Żądanie wielu odpowiedzi AJAX
- 20. Jak mogę wysłać wiadomość do innego węzła?
- 21. node.js: proxy websockets do innego portu
- 22. jak wysłać żądanie delivery_sm z SMSC
- 23. Zatrzymaj żądanie jquery ajax w ajaxStart
- 24. Apache mod_rewrite wewnętrznie do innego portu
- 25. Jak wysłać sygnał django z innego sygnału
- 26. Żądanie Ajax HEAD za pośrednictwem Javascript/jQuery
- 27. Odrzucono żądanie POST AJAX - CORS?
- 28. Jak przetestować żądanie ajax POST z RSpec?
- 29. Jquery wysyła parametry GET i POST jednocześnie na żądanie ajax
- 30. Otrzymuj odpowiedzi XML z Cross-Domain Ajax żądanie jQuery
Czy istnieje ogólny sposób zastąpić 'domenę. com' W ten sposób może działać tylko w produkcji, ponieważ używam 'localhost' w środowisku rozwijającym się. – user198729
Powinieneś być w stanie użyć ''http: //' + window.location.hostname + ': 8080/url'' do zbudowania adresu URL, który będzie działał lokalnie i online. –