使用 asp.net 在开发机器上创建无 cookie 应用程序

Posted

技术标签:

【中文标题】使用 asp.net 在开发机器上创建无 cookie 应用程序【英文标题】:Creating cookieless application on development machine with asp.net 【发布时间】:2011-01-19 21:35:58 【问题描述】:

我尝试在 ServerFault 上发布此内容,但没有成功,所以我在这里尝试。

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

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

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

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

更新

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

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

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

【问题讨论】:

您能再描述一下您的设置吗?您说您创建了一个新应用程序,但您实际上应该创建一个绑定到不同 IP 地址和/或端口号和/或主机名的新网站。您不能在同一网站下创建新应用程序。您需要创建两个单独的网站。 @MarcoMiltenburg 好吧,首先不是我提出这个问题,我只是提出了这个问题。 OP 必须要求在同一台机器/IP 上建立一个新网站。因为它仅用于开发目的。 抱歉,我的回复晚了,伙计们!我确实对仅在开发机器上进行此设置感兴趣,并且严重依赖于使用 firebug 检查请求信息以确保确实没有使用 cookie。我确实觉得下面的答案没有足够的细节,但也许我应该在我的问题中添加更多信息。事实证明,在不同的主机上部署我的静态网站后,它只是“工作”。我将更新我的问题以包含有关我的设置的详细信息。 您是否尝试过添加一个指向本地框的主机文件条目,以便浏览器认为它是一个不同的域,因此不发送 cookie? 【参考方案1】:

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

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

我想就是这样,虽然我还没有测试过。为了安全起见,您可以使用来自Creating Static Content Website in IIS 7 的建议,该建议禁用所有模块并仅在必要时重新启用它们:

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

PS:有关设置缓存值的提示,请参阅this answer。

【讨论】:

【参考方案2】:

基本思路:

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

参考: - Stopping cookies being set from a domain (aka "cookieless domain") to increase site performance - How to respect "Serve static content from a cookieless domain" page speed rule in IIS6? - Avoiding cookies while requesting static content

【讨论】:

【参考方案3】:

问题是当我看 请求和响应 请求的文件,他们仍然有 session_id cookie 定义

这是因为 HttpRequest.CookiesRequest 对象的属性。


这可能有助于理解

Read, Write, and Delete Cookies in ASP.NET Beginner's Guide To ASP.NET Cookies

【讨论】:

【参考方案4】:

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

【讨论】:

他正在寻找的概念不是删除cookie,而是根本不使用它们 所以他不想让 ASP.NET 创建会话?是他要找的吗?

以上是关于使用 asp.net 在开发机器上创建无 cookie 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

第一个Asp.net小项目,主页写了下后台代码

在 asp.net 中使用 c++ dll - 异常:无法加载文件或程序集

使用 ASP .Net 管理本地机器上的进程

如何在开发机器上测试子域? abc.localhost

ASP.NET Core 2.1 中的数据保护仅适用于一台机器

asp.net发布问题