2010-04-21 19 views
5

Mam serwer w naszym firmowym intranecie, który uruchamia JBoss. Chcę wysyłać wywołania API do tego serwera z mojego komputera, także w intranecie, i uzyskiwać wynikowe odpowiedzi XML za pomocą JQuery.Jak ta sama polityka pochodzenia ma zastosowanie do adresów IP?

Przeczytałem wpis na Wikipedia, ale nie rozumiem, jak to się ma do mojej sytuacji, ponieważ nasze maszyny mają tylko adresy IP, a nie nazwy domen.

mam

  • serwer URL: 10.2.200.3:8001/serviceroot/service
  • adres IP klienta: 10.2.201.217

moje pytania są następujące:

  1. O ile rozumiem d to są różne domeny, prawda? Tak więc muszę użyć serwera proxy do wywołania JQuery.ajax na serwerze
  2. Jeśli chcę uniknąć wykonywania (2), czy mogę zainstalować Apache na serwerze i serwer strony z formularzem kodu JS tam? Ale wtedy JS będzie z 10.2.200.3, a serwer o 10.2.200.3:8001. Czy nie są to różne domeny zgodnie z polityką?

Dzięki!

+0

Spędziłem około godziny, próbując to zrozumieć w zeszłym roku i nie sądzę, żebym kiedykolwiek dostał dobrą odpowiedź; Naprawdę go nie potrzebowałem, więc zrezygnowałem: I – Pointy

+0

Pointy, całkowicie cię rozumiem! Wyciągam włosy, żeby rozwiązać ten prosty wyglądający problem JQuery przez dwa dni. – recipriversexclusion

Odpowiedz

2
  1. Tak.

  2. Tak, różne porty oznaczają różne pochodzenie. Jest to coś, co większość przeglądarek zrobiła w JS od jakiegoś czasu, ale jest to wyraźnie opisane w HTML5 draft, do którego odwołuje się XMLHttpRequest draft.

Jeżeli A i B mają komponenty portów, które nie są identyczne, return false.

+0

Dzięki Bobince! Jeszcze jedno pytanie: Co byś zasugerował, gdyby mój serwer JBoss obsługiwał strony z JS 10.2.200.3:8001 lub czy powinienem używać powszechnie używanego rozwiązania serwera proxy. – recipriversexclusion

+0

Zależy od tego, jak integralną częścią usługi internetowej są usługi, jak sądzę, niezależnie od tego, czy chcesz, aby były częścią tego samego projektu. Tak czy inaczej, nie chciałbym uruchamiać skryptów AJAX dla programistów na serwerze produkcyjnym, jeśli tak właśnie jest. – bobince

2

Jeśli port lub adres są różne, są to różne domeny. Jeśli potrzebujesz dostępu do informacji z tego, co faktycznie jest innym serwerem, masz naprawdę dwie opcje. Jedną z nich jest napisanie odwrotnego proxy, aby przekazać żądania z tego samego serwera źródłowego do serwera pomocniczego.

Alternatywnie, jeśli kontrolujesz cel dodatkowy i nie ma zagrożenia bezpieczeństwa w zapewnianiu bezpośredniego dostępu, możesz rozważyć dostosowanie serwera pomocniczego w celu wysyłania odpowiedzi JSON-P.

Powiązane problemy