Почему я не могу отладить из Visual Studio 2005 после установки IE8?

У меня есть рабочий solulion, используя ответы от @John и @Arpad link и @RobWinch link

Я использую Spring Security 3.2.9 и jQuery 1.10.2.

Расширить класс Spring, чтобы вызвать ответ 4XX только из запросов AJAX:

public class CustomLoginUrlAuthenticationEntryPoint extends LoginUrlAuthenticationEntryPoint {

    public CustomLoginUrlAuthenticationEntryPoint(final String loginFormUrl) {
        super(loginFormUrl);
    }

    // For AJAX requests for user that isn't logged in, need to return 403 status.
    // For normal requests, Spring does a (302) redirect to login.jsp which the browser handles normally.
    @Override
    public void commence(final HttpServletRequest request,
                         final HttpServletResponse response,
                         final AuthenticationException authException)
            throws IOException, ServletException {
        if ("XMLHttpRequest".equals(request.getHeader("X-Requested-With"))) {
            response.sendError(HttpServletResponse.SC_FORBIDDEN, "Access Denied");
        } else {
            super.commence(request, response, authException);
        }
    }
}

applicationContext-security.xml

  
        
     
    
...
    
        
    
...

    
      
        
          
            
              
            
            
            
          
        
      
    

В моих JSP добавьте глобальный обработчик ошибок AJAX, как показано здесь здесь

  $( document ).ajaxError(function( event, jqxhr, settings, thrownError ) {
      if ( jqxhr.status === 403 ) {
          window.location = "login.jsp";
      } else {
          if(thrownError != null) {
              alert(thrownError);
          } else {
              alert("error");
          }
      }
  });

. Также удалите существующие обработчики ошибок из вызовов AJAX в JSP-страницах:

        var str = $("#viewForm").serialize();
        $.ajax({
            url: "get_mongoDB_doc_versions.do",
            type: "post",
            data: str,
            cache: false,
            async: false,
            dataType: "json",
            success: function(data) { ... },
//            error: function (jqXHR, textStatus, errorStr) {
//                 if(textStatus != null)
//                     alert(textStatus);
//                 else if(errorStr != null)
//                     alert(errorStr);
//                 else
//                     alert("error");
//            }
        });

Надеюсь, что это поможет другим.

Update1 Я обнаружил, что мне нужно добавить параметр (always-use-default-target = "true") в конфигурацию формы входа. Это было необходимо, так как после запроса AJAX перенаправляется на страницу входа (из-за истекшего сеанса), Spring запоминает предыдущий запрос AJAX и автоматически перенаправляет его после входа в систему. Это приведет к отображению возвращаемого JSON на странице браузера. Конечно, не то, что я хочу.

Update2 Вместо использования always-use-default-target="true" используйте пример @RobWinch блокировки запросов AJAX из requstCache. Это позволяет нормальным ссылкам перенаправляться на исходную цель после входа в систему, но AJAX переходит на домашнюю страницу после входа в систему.

32
задан Tom Robinson 23 March 2009 в 12:57
поделиться

3 ответа

Мой коллега имел подобные проблемы и нашел это:

IE 8 имеет функцию, названную Слабо связанным Internet Explorer (LCIE), который приводит к IE, натыкающемуся на несколько процессов.

http://www.microsoft.com/windows/internet-explorer/beta/readiness/developers-existing.aspx#lcie

Более старые версии Отладчика Visual Studio запутываются этим и не могут выяснить, как присоединить к корректному процессу. Можно работать вокруг этого путем отключения опции роста процесса LCIE. Вот то, как:

  1. Открывают RegEdit
  2. Browse to HKEY_LOCALMACHINE-> SOFTWARE-> Microsoft-> Internet Explorer-> Main
  3. Add dword под этим ключом, названным Набором TabProcGrowth
  4. TabProcGrowth к 0

, Так как Вы работаете на Windows Server 2003, это - все, что необходимо должны быть сделать. При столкновении с той же проблемой на Vista или более новый необходимо будет также выключить защищенный режим.

Кредит: Brad Sullivan, Диспетчер Программ, Отладчик Visual Studio, источник MSFT

: http://social.microsoft.com/Forums/en-US/vsdebug/thread/e2c795cd-b7a0-4fad-b7c9-b1ca40d7302e

43
ответ дан 27 November 2019 в 20:57
поделиться

Если вы столкнетесь с этим в IE8 и Visual Studio 2008, измените файл hosts и укажите localhost на 127.0.0.1 :

:: 1 localhost

127.0.0.1 localhost

2
ответ дан 27 November 2019 в 20:57
поделиться

У меня недавно была подобная проблема после установки обновления Windows Vista. В основном обновление изменило файл hosts, который вызвал ту же проблему, которую Вы описываете.

, По-видимому, запись в файле hosts должна быть снабжена префиксом тремя двоеточиями, т.е.:

::: 1 localhost

По некоторым причинам обновление Vista изменило это на два двоеточия. Я не уверен, есть ли у Вас та же проблема, но она кажется, что это стоит проверить.

3
ответ дан 27 November 2019 в 20:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: