Использование IP-адреса клиента для получения контента - PullRequest
1 голос
/ 08 декабря 2011

Я немного смущен, потому что пытаюсь получить контент удаленно, используя браузер клиента, а не сервер.Но у меня есть спецификации, которые делают его невозможным для меня, я буквально целый день потратил на это безуспешно.

  1. Данные, которые мне нужно получить, находятся на удаленном сервере.
  2. У меня нет этого сервера (я не могу его модифицировать).
  3. Это строка, и мне нужно ее получить и передать в PHP.
  4. Это должен быть браузером клиента (пользователя, просматривающего веб-сайт), который на самом деле получает данные (это должен быть IP, а не серверы).

И с междоменным доменомполитика я, кажется, не в состоянии обойти это.Я уже знал об этом, все еще пробовал простой запрос Ajax, который потерпел неудачу.Тогда я подумал: «Почему бы не использовать iFrames?», Но это же ограничение, похоже, относится и к ним.Затем я прочитал об использовании YQL (http://developer.yahoo.com/yql/), но заметил, что сервер, к которому я пытался добраться, заблокировал пользовательский агент YQL, что делает невозможным использование этого метода.

Итак, это все, что я мог придумать или найти.Но я не могу поверить, что невозможно достичь такой вещи, которая даже не выглядит сложной ...

О, и мои знания Javascript очень просты, это тоже не должно помочь.

Ответы [ 4 ]

1 голос
/ 08 декабря 2011

Это одна из причин, по которой существует политика того же происхождения. Вы пытаетесь получить доступ к данным своей веб-страницы на другом сервере, без ведома пользователя и без «разрешения» другого сервера на это.

Без установления двусторонней системы доверия (т.е. изменения «другого» сервера), я считаю, что это невозможно.

Даже с новой поддержкой xhr и crossdomain для работы связи по-прежнему необходимо двустороннее доверие.

Вы могли бы рассмотреть подход толстого клиента или попробовать предложение @selbie и потребовать ручного взаимодействия с пользователем.

0 голосов
/ 08 декабря 2011

Вы можете сделать это с помощью приложения flash: прошить с файлом crossdomain.xml (не поможет, так как вы не управляете другим сервером)

В новых браузерах CORS - требуется установить заголовок Access-Control-Allow-Origin на стороне сервера.

Вы также можете попробовать использовать JSONP (но я думаю, что это не сработает, поскольку вы не являетесь владельцем другого сервера).

Я думаю, вам нужно прикусить пулю и найти какой-то другой способ получить контент (например, на стороне сервера).

0 голосов
/ 08 декабря 2011
The same origin policy prevents document or script loaded from one 
origin from getting or setting properties of a document from a different
origin. 

- от http://www.mozilla.org/projects/security/components/same-origin.html

Теперь, если вы хотите сделать хакерство, чтобы получить его ... посетите этот сайт

Примечание: я никогда не пробовал ни один из методов на вышеупомянутом сайте и не могу гарантировать их успех

0 голосов
/ 08 декабря 2011

Я вижу только действительно ужасное решение: iFrames. Эта статья содержит несколько полезных сведений для начала.

...