Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 有没有办法控制cookie发送到哪个URL?_.net_Http_Iis_Cookies_Web - Fatal编程技术网

.net 有没有办法控制cookie发送到哪个URL?

.net 有没有办法控制cookie发送到哪个URL?,.net,http,iis,cookies,web,.net,Http,Iis,Cookies,Web,我的会话cookie有点长,大约700字节,因为它包含各种加密的用户信息等等。我可以做一些事情来缩小这个尺寸,我也在研究这个角度,但这是另一个话题 我的问题是,我不喜欢在每次HTTP请求时将这个cookie发送到服务器的方式;包括对JPG图像、CSS文件和静态Javascript文件的请求。由于这些请求不需要cookie,我觉得它可能会减慢页面加载时间,因为这是700字节x页面加载的资源数量。显然,这些文件会被缓存,但我仍然希望我的页面能够尽可能快速、流畅地加载 我能想到的一个解决方案是将所有静

我的会话cookie有点长,大约700字节,因为它包含各种加密的用户信息等等。我可以做一些事情来缩小这个尺寸,我也在研究这个角度,但这是另一个话题

我的问题是,我不喜欢在每次HTTP请求时将这个cookie发送到服务器的方式;包括对JPG图像、CSS文件和静态Javascript文件的请求。由于这些请求不需要cookie,我觉得它可能会减慢页面加载时间,因为这是700字节x页面加载的资源数量。显然,这些文件会被缓存,但我仍然希望我的页面能够尽可能快速、流畅地加载

我能想到的一个解决方案是将所有静态内容放在另一个子域上,例如cdn.myserver.com/images/和cdn.myserver.com/scripts/,并将cookie路径设置为仅包括www.myserver.com。我相信这是可行的,但它会使开发和登台环境复杂化。我可能最终不得不根据代码运行的环境动态生成URL

我的问题:

除了上述解决方案之外,是否有任何方法可以防止针对某些HTTP请求(如图像、脚本和样式资源)通过网络发送cookie


我在.NET堆栈上运行,IIS7.5作为一个web服务器。

从服务器的角度看,您无法做任何事情;当服务器IIS、框架ASP.NET或其他服务器收到请求时,cookie已经发送

你提到的绝对有效,引用我的话:

主机名可以指定为IP地址或FQHN字符串。有时我们会将一个主机名与另一个主机名进行比较。主机A的域名与主机B的域名匹配,如果

两个主机名都是IP地址,它们的主机名字符串完全匹配;或 两个主机名都是FQDN字符串,并且它们的主机名字符串完全匹配;或 A是FQDN字符串,格式为NB,其中N是非空名称字符串,B的格式为.B',B'是FQDN字符串。因此,x.y.com域与.y.com匹配,但与y.com不匹配。 请注意,域匹配不是交换操作:a.b.c.com域匹配.c.com,但不是相反

因此,创建一个单独的子域,同时专门将cookie键入不同的子域将起作用

注意它是和


为了降低登台和开发环境的复杂性,我建议遵循以下指导原则:;将内容放在单独的域中意味着您不必为这些环境中的任何一个做任何不同的事情。

从服务器的角度看,您无法做任何事情;当服务器IIS、框架ASP.NET或其他服务器收到请求时,cookie已经发送

你提到的绝对有效,引用我的话:

主机名可以指定为IP地址或FQHN字符串。有时我们会将一个主机名与另一个主机名进行比较。主机A的域名与主机B的域名匹配,如果

两个主机名都是IP地址,它们的主机名字符串完全匹配;或 两个主机名都是FQDN字符串,并且它们的主机名字符串完全匹配;或 A是FQDN字符串,格式为NB,其中N是非空名称字符串,B的格式为.B',B'是FQDN字符串。因此,x.y.com域与.y.com匹配,但与y.com不匹配。 请注意,域匹配不是交换操作:a.b.c.com域匹配.c.com,但不是相反

因此,创建一个单独的子域,同时专门将cookie键入不同的子域将起作用

注意它是和


为了降低登台和开发环境的复杂性,我建议遵循以下指导原则:;将内容放在一个单独的域上意味着您不必为这些环境中的任何一个做任何不同的事情。

据我所知,唯一的解决方案是使用您提到的无cookieless域或子域。 但请记住,域或子域应该是指向主域的规范DNS名称

为了简化开发和登台环境,我建议您在ASP.net项目中使用组件,这样它可以满足您在后台的需要,并且它还有一些您可能喜欢使用的其他功能。
此外,它还具有debug | release模式,因此您可以在调试时绕过它。

据我所知,唯一的解决方案是使用您提到的无cookieless域或子域。 但请记住,域或子域应该是指向主域的规范DNS名称

为了简化开发和登台环境,我建议您在ASP.net项目中使用组件,这样它可以满足您在后台的需要,并且它还有一些您可能喜欢使用的其他功能。 此外,它还具有调试|释放模式,因此您可以在调试时绕过它。

+1 fo
r组合管理记录,我会检查它,或者至少编写类似的代码!这个组件非常棒,而且是开源的,所以正如我所做的那样,您可能希望向它添加或更改一些特性。您只需编译它,将编译后的.dll放入您的BIN,在web.config中添加一些行,就完成了。祝CombineAdminify rec好运+1,我会检查一下,或者至少编写类似的代码!这个组件非常棒,而且是开源的,所以正如我所做的那样,您可能希望向它添加或更改一些特性。您只需编译它,将编译后的.dll放入您的BIN,在web.config中添加一些行,就完成了。幸运的是,对于图像,我认为使用CDN是不需要动脑筋的。对于脚本,我不断地更改它们并在VisualStudio中运行应用程序,每次都要将脚本更改推送到CDN会很麻烦。在运行本地主机时,我必须编写指向本地URL的代码,而在生产环境中运行时,我必须编写指向CDN的代码。@MikeChristensen这无疑是一件痛苦的事情,但是的,这正是我们需要做的。你能区分调试版本和发布版本吗?您可以在函数中使用ifdef并返回相应的URL。是的,它将是某种web.config设置。我认为脚本文件中引用的资源将神奇地工作,只要脚本与它引用的资源位于同一CDN上。只有非CDN资源上的URL必须是完全限定的,并且这些URL可以通过代码生成。是的,对于图像,我认为使用CDN是不需要动脑筋的。对于脚本,我不断地更改它们并在VisualStudio中运行应用程序,每次都要将脚本更改推送到CDN会很麻烦。在运行本地主机时,我必须编写指向本地URL的代码,而在生产环境中运行时,我必须编写指向CDN的代码。@MikeChristensen这无疑是一件痛苦的事情,但是的,这正是我们需要做的。你能区分调试版本和发布版本吗?您可以在函数中使用ifdef并返回相应的URL。是的,它将是某种web.config设置。我认为脚本文件中引用的资源将神奇地工作,只要脚本与它引用的资源位于同一CDN上。只有非CDN资源上的URL必须是完全限定的,并且这些URL可以由代码生成。