2013-10-14 2 views
0

У меня есть это программное обеспечение от другого программиста, который покинул проект. Теперь у меня проблема, некоторые URL-адреса с переменными GET не работают, я думаю, что это из-за #, поэтому этот URL-адрес выглядит так.Как разбирать # в HTTP GET?

www.domain.com/myvariable1/myvariable-#2

так, как вы можете видеть, переменная GET только разбирает «myvariable-» так # 2 резаным выключен. Мне нужно иметь полную «myvariable-# 2»

Я искал google и потратил часы, чтобы решить эту проблему. Пожалуйста, помогите мне. Спасибо!


EDIT:

Так что я нашел решение в этом. Я анализирую весь URL-адрес с помощью javascript, и оттуда я могу теперь получить оставшуюся строку после #

Благодарим вас за все ответы. Большое спасибо!

+2

... это не переменная get, ее часть URL. Не можете ли вы запросить запрошенный URL-адрес по его компонентам? – GrandmasterB

+0

Это не URL-адрес. В нем отсутствует схема, обязательная часть URL-адреса. –

+1

Если ответы вам помогли, пожалуйста, выберите «Решение». –

ответ

11

# начинает идентификатор фрагмента. Фрагменты обрабатываются на стороне клиента, эта часть URI даже не отправляется на сервер, поэтому вы просто не можете обрабатывать его там.

+0

Вы имеете в виду, что на этом деле не будет работы? –

+0

@VinmarkBenedicto Не можете ли вы использовать '#' в URI? –

+0

@MichaelT это другое программное обеспечение программиста. и он ушел. Я нанят, чтобы продолжить то, что он делает, к сожалению, это одна из его ошибок. –

2

Невозможно получить фрагмент (#...) с PHP. Кажется, что есть способ сделать это с помощью javascript. См Parsing URL hash/fragment identifier with JavaScript

Только в случае, если вы на коробке Unix: вы можете запустить nc (netcat) из окна терминала, как это:

$ nc -l 8080 

, которая открывает соединение для чтения на порту 8080. Теперь вы можете подключите браузер на этом компьютере к этому порту и запросите URL-адрес, например http://localhost:8080/foobar/baz.html#abcde. Выход Netcat идентифицирует URL сервер видит:

GET /foobar/baz.html HTTP/1.1 
Host: localhost:8080 
Connection: keep-alive 
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.69 Safari/537.36 
Accept-Encoding: gzip,deflate,sdch 
Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4 

Так запрашиваемый путь /foobar/baz.html без идентификатора фрагмента (#abcde).

+0

И если вы находитесь в Windows, вы можете проверить содержимое HTTP-запросов, используя такие инструменты, как [Fiddler] (http://fiddler2.com/) или [Charles] (http://www.charlesproxy.com/) , – Carson63000

0

Как указывалось другими, в URL-адресах # является разделителем для идентификатора фрагмента.

Если в путь включен символ #, он должен быть правильно закодирован: www.domain.com/myvariable1/myvariable-%232.

Таким образом, путь, видимый сервером, будет myvariable1/myvariable-#2.

Смежные вопросы