2016-07-07 1 views
1

Я пытаюсь передать targetURL с помощью метода get. Это URL, который я попробовал: http://localhost:8000/login/auth?targetURL=www.google.com Backbone.js вернется «не может получить /login/auth?targetURL=www.google.com»Backbone.js не может найти модуль, если мой url содержит «период»

по праву, получить переменную не должны влиять на модуль я иду в Это. Если я удалю «период», то URL-адрес работает хорошо. для: например http://localhost:8000/login/auth?targetURL=wwwgooglecom

это как мои маршруты выглядеть

routes: { 
     'logout': 'logout', 
     ':level1': 'subpageAction', 
     'logout/:authFail': 'logout', 
     ':level1/:level2': 'subpageAction', 
     ':level1/:level2/:level3': 'subpageAction', 
     ':level1/:level2/:level3/:level4': 'subpageAction', 
     '': 'subpageAction' 
    }, 

Есть ли у кого такая же проблема? Проблема возникает, когда я ставлю «.». в моем url. Кто-нибудь может помочь по этой проблеме?

+0

Разве это не управление вашим сервером? –

+0

Если 'targetURL = www' (без точки), то все работает так, как ожидалось? Если да, то какую версию Backbone вы используете? –

+0

@coding_idiot im using backbone.js 1.1.2. Да, целевой URL работает без точек. –

ответ

1

Вы столкнулись с проблемой RFC 3986. В то время как стандарты W3C для представления формы заявили, что точка не должна быть заменена %2E, практика заключается в том, что было так много хаков с «..», скрывающимися в представлениях форм, что различные уровни программного обеспечения будут отвлекать вас от рендеринга даже кодирования точка как %2E недействительна.

Одно решение, которое может работать в зависимости от вашего конкретного варианта использования, заключается в том, чтобы бросить конечную косую черту в конец URL-адреса, например, www.google.com/ вместо www.google.com.

Возможно, вы захотите посмотреть на них twoquestions. Здесь нет идеального ответа, рядом с идеальными.

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