9

我尝试将其发布在 ServerFault 上,但没有成功,所以我在这里尝试。

我正在考虑设置一个新域来在我的网站上托管静态内容,并让它像 Stackoverflow 的 静态域一样无 cookie 。因此,在继续购买域并进行设置之前,我想先在我的开发机器上在 localhost 下对其进行测试(我必须提到,我计划在我的新域上运行 IIS 以获取静态文件)。

因此,我在 IIS 下创建了一个新应用程序并禁用了会话状态和表单身份验证。当我的主应用程序需要 css、图像和 js 等资源时,我使用托管它们的“静态”应用程序的路径。

问题是当我查看请求文件的请求和响应时,它们仍然定义了 session_id cookie 以及 asp.net 身份验证 cookie。

是否有可能完成我在开发机器上尝试做的事情,还是我必须继续购买新的域,希望能够让事情变得正确?我试图阅读有关无 cookie 域的信息,但无法弄清楚我可能缺少什么。

更新

我的设置如下。我创建了两个 Web 应用程序。- 一个用于网站的 Web 应用程序 - 一个用于所有静态(css、图像、脚本...)的 Web 应用程序

两个应用程序都添加到 IIS 中,并且它们都不是另一个应用程序的子应用程序。(它们都是 IIS 结构下的独立网站)。

我想知道是否让两个网站在同一个 IP 下可能解释了我的结果,但是当我部署这两个网站时,问题就消失了。

4

4 回答 4

7

确保您具有以下 web.config 设置:

  • <sessionState mode="Off" />
  • <authentication mode="None" />

我认为仅此而已,尽管我还没有测试过。为了安全起见,您可以使用 在 IIS 7 中创建静态内容网站的建议,该建议禁用所有模块,仅在必要时重新启用它们:

<system.webserver> 
    <modules>
        <clear />
        <add name="StaticFileModule" ... />
        ...
    </modules>
    ...
</system.webserver>

PS:有关设置缓存值的提示,请参阅此答案

于 2011-10-27T17:19:00.700 回答
1

基本思想:

  1. 在 IIS 中创建一个新网站(将其映射到一个子域或使其成为一个完全独立的站点。如果用户从http://example.com而不是http://www.example.com访问您的站点,有时 suddomains 是不够的因为在第一种情况下,cookie 也可能会发送到新的子域)。
  2. 在 IIS 中为您的新站点一起禁用 ASP.NET。如果您只是提供静态内容,那么您不需要启用 ASP.Net
  3. 加载您的静态内容并链接

参考:
-停止从域(也称为“无 cookie 域”)设置 cookie 以提高站点性能
-如何遵守 IIS6 中的“从无 cookie 域提供静态内容”页面速度规则?
-在请求静态内容时避免使用 cookie

于 2011-11-02T18:25:57.030 回答
0

您是否在页面的 Load 方法末尾尝试过 Response.Cookies.Clear() ?这应该会消除 Response 对象中的所有 cookie,并且不会向客户端发送任何 cookie。这也可以在 Web 模块或 HttpHandler 中完成。

于 2011-11-02T20:24:27.040 回答
0

问题是当我查看请求文件的请求和响应时,它们仍然定义了 session_id cookie

这是因为HttpRequest.CookiesRequestObject 的属性。


这可能有助于理解

于 2010-02-23T00:50:28.453 回答