强制浏览器发送一些HTTP请求标头

时间:2011-02-11 20:46:48

标签: gwt http-headers webbrowser-control http-status-code-401

我需要包含一些安全(BASIC身份验证)应用程序。

当我在浏览器中打开应用程序URL时,浏览器会要求我输入您的凭据...

  

我所知道的是:

     
      
  1. 浏览器要求服务器获取   一些网址 - 应用的网址
  2.   
  3. 服务器检查请求标头   对于Authentication header和。{   没找到它
  4.   
  5. 服务器将401发送给   浏览器返回
  6.   
  7. 浏览器解释此响应   代码到消息对话框中   告诉我要我进入   要发送回的用户名/密码   Authentication中的服务器   请求标题
  8.   

到目前为止......非常好,我可以编写一些页面(在JSP中),将这个必需的http请求标头发送到调用此页面的请求。 所以我将通过我的页面调用此应用程序..

这里的问题是,这个应用程序(实际上是一个GWT应用程序)包含对来自托管此应用程序的服务器的一些Javascript和CSS文件的引用。我导入的应用程序页面如下:

<html>
    <link href="http://application_host/cssfile.css" />
    <link href="http://application_host/javascriptfile.js" />
    .....
</html>

所以,我再次发现应用程序要求我提供css和js文件的身份验证报告!

我正在考虑许多解决方案,但不知道每个

的适用性
  • 一种解决方案是询问浏览器 (通过Javascript)发送请求 标题(Authentication)当他 向服务器询问js和css 文件

请告诉我你对此的看法......并且非常欢迎任何其他建议。

感谢。

3 个答案:

答案 0 :(得分:1)

我认为您对服务器的配置方式感到有些困惑。身份验证在身份验证领域的上下文中进行。您的资产应与您的页面位于同一身份验证领域,或者(更有可能)根本不需要身份验证。浏览器应该缓存给定领域的凭据,而不是再次提示它们。

请参阅http://en.wikipedia.org/wiki/Basic_access_authentication

上的协议示例

答案 1 :(得分:0)

从你的故事来看,有些东西告诉我你的问题在于它的身份验证方法。不是如何实现它。你为什么这么想打扰请求标题呢?

据我所知,您可以配置容器(即Tomcat)以强制对某些URL进行http身份验证。您的容器将确保已进行身份验证。无需自己设置http标头。

也许你可以更好地解释一下你想要实现的目标,而不是告诉实现细节?

答案 2 :(得分:0)

为什么选择css&amp; js文件保存在服务器的保护区域?您需要将文件放入服务器的公共区域。如果您没有公共区域,那么您必须为此提供帮助。如何做到这一点取决于服务器端软件架构和配置。