相关疑难解决方法(0)

Chrome localhost Cookie未设置

我有一个ASP.net应用程序,它使用cookie来存储用户选择的语言.一切正常,除非我在localhost上.用127.0.0.1替换localhost使它再次工作......为什么?

我看到了对file://的预期限制,但我实际上找不到对localhost的预期限制的任何引用.

我无法理解的是为什么ASP.net会话(ASP.NET_SessionId)和ASP.net表单身份验证Cookie(.FSAUTHSSO)是为localhost域正确设置的,但我的cookie不是......为什么?!

我已经google了很多,没有任何作用:

  • 设置Chrome命令行标志--enable-file-cookies [不工作]
  • 将cookie设置为HttpOnly [无关紧要]
  • 将到期时间更改为会话或日期... [无关紧要]
  • 将Cookie路径更改为根(/)或其他任何内容[无关紧要]

那有什么关系呢?:)

为什么ASP.net cookie可以设置而我的不会?有什么不同?

最后一件事就是提到这也发生在IE上,但在FF上工作正常.

谢谢!

亚历克斯

asp.net cookies session google-chrome

49
推荐指数
6
解决办法
6万
查看次数

为跨源请求设置cookie

如何共享cookie跨源?更具体地说,如何将Set-Cookie标题与标题结合使用Access-Control-Allow-Origin

这是我的情况的解释:

我正在尝试localhost:4000为托管在其上的Web应用程序中运行的API设置cookie localhost:3000.

我似乎在浏览器中收到了正确的响应标题,但不幸的是它们没有任何效果.这些是响应标头:

HTTP/1.1 200 OK
Access-Control-Allow-Origin: http://localhost:3000
Vary: Origin, Accept-Encoding
Set-Cookie: token=0d522ba17e130d6d19eb9c25b7ac58387b798639f81ffe75bd449afbc3cc715d6b038e426adeac3316f0511dc7fae3f7; Max-Age=86400; Domain=localhost:4000; Path=/; Expires=Tue, 19 Sep 2017 21:11:36 GMT; HttpOnly
Content-Type: application/json; charset=utf-8
Content-Length: 180
ETag: W/"b4-VNrmF4xNeHGeLrGehNZTQNwAaUQ"
Date: Mon, 18 Sep 2017 21:11:36 GMT
Connection: keep-alive

此外,Response Cookies当我使用Chrome开发者工具的"网络"标签检查流量时,我可以看到cookie .但是,我看不到在"应用程序"选项卡下设置的cookie Storage/Cookies.我没有看到任何CORS错误,所以我假设我错过了其他的东西.

有什么建议?

更新I:

我正在使用React-Redux应用程序中的请求模块/signin向服务器上的端点发出请求.对于服务器我使用快递.

快递服务器:

res.cookie('token', 'xxx-xxx-xxx', { maxAge: 86400000, httpOnly: true, domain: 'localhost:3000' })

在浏览器中请求:

request.post({ uri: '/signin', json: { userName: …

authentication cookies localhost http-headers cors

35
推荐指数
4
解决办法
4万
查看次数

使用Django频道进行会话认证

尝试使用一个非常简单的websockets应用程序来使用Django通道进行身份验证,该应用程序回送用户使用前缀发送的任何内容"You said: ".

我的流程:

web: gunicorn myproject.wsgi --log-file=- --pythonpath ./myproject
realtime: daphne myproject.asgi:channel_layer --port 9090 --bind 0.0.0.0 -v 2
reatime_worker: python manage.py runworker -v 2
Run Code Online (Sandbox Code Playgroud)

我在本地测试时运行所有进程heroku local -e .env -p 8080,但您也可以单独运行它们.

注意我打开了WSGI localhost:8080和ASGI localhost:9090.

路由和消费者:

### routing.py ###

from . import consumers

channel_routing = {
    'websocket.connect': consumers.ws_connect,
    'websocket.receive': consumers.ws_receive,
    'websocket.disconnect': consumers.ws_disconnect,
}
Run Code Online (Sandbox Code Playgroud)

### consumers.py ###

import traceback 

from django.http import HttpResponse
from channels.handler import AsgiHandler

from channels import Group
from channels.sessions import channel_session …
Run Code Online (Sandbox Code Playgroud)

python django session websocket django-channels

16
推荐指数
2
解决办法
6043
查看次数

IE VS Chrome和Firefox中的网络安全(bug)

为什么Web Security在不同的浏览器上的工作方式不同:

细节:

我有两个申请

一个是简单的HTML应用程序,另一个是ASP.NET MVC4 WebApi应用程序,项目在同一个解决方案中,我设置了多个启动项目,同时运行应用程序.


工作版本:

我在Web API项目中使用了Web Security.我完全实现了网络安全......

登录操作代码

// GET api/company
[System.Web.Http.AcceptVerbs("Post")]
[System.Web.Http.HttpPost]
public HttpResponseMessage Login(LoginRequest loginRequest)
{
    try
    {
        if (WebSecurity.Login(loginRequest.EmailAddress, loginRequest.Password, true))
        {
            var userDetails = new string[2];
            userDetails[0] = loginRequest.EmailAddress;
            var currentUSerRole = Roles.GetRolesForUser(loginRequest.EmailAddress);
            userDetails[1] = currentUSerRole[0].ToString();
            HttpResponseMessage response =
                Request.CreateResponse(HttpStatusCode.Accepted, userDetails);
            return response;
        }
        else
        {
            HttpResponseMessage response
                = Request.CreateResponse(HttpStatusCode.Unauthorized);
            return response;
        }
    }
    catch (Exception e)
    {
            HttpResponseMessage response
            = Request.CreateResponse(HttpStatusCode.Unauthorized);
           return response;
    }  
}
Run Code Online (Sandbox Code Playgroud)

*WebSecurity.Login*当我使用登录方法调用时,我正在使用所有浏览器 …

javascript c# asp.net asp.net-mvc asp.net-web-api

14
推荐指数
1
解决办法
1228
查看次数

在父窗口中访问iFrame的cookie

我正在加载不同域的iFrame.父站点和iFrame站点都在我的控制之下.我正在使用iFrame.postMessage将消息发布到iFrame.我通过iFrame加载的网站有一个cookie(不是仅限http的cookie).我需要在父网站内读取此cookie.

   var opIFrame=document.getElementById('opIFrame').contentWindow;

    /**
 * periodically invoking the Endpoint at OP for every six seconds
 */
setInterval(function(){
    console.log('Sending polling Request From RP Client ... ' + clientId);
    document.all.opIFrame.src = endPoint;
    opIFrame.postMessage(clientId,"https://localhost:9443/oauth2/loginstatus");
    var session=getCookieValue("session_state");
    console.log('**session**'+session);
},6000);


function getCookieValue(cookieName) {
var name = cookieName + "=";
var cookies =document.cookie.split(';');
if (!cookies) {
    return null;
}
for (var i = 0; i < cookies.length; i++) {
    var cookie = cookies[i].trim();
    if (cookie.indexOf(name) == 0) {
        return cookie.substring(name.length, cookie.length);
    }
}
return null;
Run Code Online (Sandbox Code Playgroud)

} …

javascript cookies iframe

9
推荐指数
2
解决办法
4万
查看次数

在不同端口之间共享Cookie

我有一个托管在端口:80上的application1(C#)和托管在端口:3030上的应用程序2(nodejs).两者都在localhost上.

请求工作流程如下:

  • 浏览器向应用程序1发送请求
  • 应用程序1发送回cookie数量
  • 稍后在浏览器上将请求发送到应用程序2
  • ^问题是最后一步,cookie没有包含在请求中.

我尝试/理解的事情:

  • 我知道这是一个同源策略限制,并且由于端口号不同,浏览器会将它们视为不同的域.
  • 在应用程序1(它使用System.Web.HttpCookie)中,我试图将域设置为特定于端口("127.0.0.1:3030"),但似乎浏览器不接受它或忽略它.

    //c# code
    var testCookie1 = new HttpCookie("Test", "testValue");
    testCookie1.Domain = "127.0.0.1:3030";
    testCookie1.Path = "/";
    testCookie1.Expires = DateTime.Now.AddDays(1);
    Response.SetCookie(testCookie1);
    
    var testCookie2 = new HttpCookie("Test2", "testValue2");
    testCookie2.Domain = "127.0.0.1";
    testCookie2.Path = "/";
    testCookie2.Expires = DateTime.Now.AddDays(1);
    Response.SetCookie(testCookie2);
    
    Run Code Online (Sandbox Code Playgroud)

从服务器返回的Cookie 存储在浏览器中的Cookie

服务器发回一个附有端口号的cookie,但浏览器似乎忽略了它.

这是我的ajax调用:

   var request = $.ajax({
        url: 'http://127.0.0.1:3030/SomeTask',
        type: 'POST',
        crossDomain: true,
    });
Run Code Online (Sandbox Code Playgroud)

c# cookies google-chrome http node.js

9
推荐指数
1
解决办法
3963
查看次数

发送cookie时为什么Web浏览器不关心端口号?

我用firebug手动创建了两个cookie:

Cookie1=value1; expires=Sat, 29 Mar 2014 06:21:54 GMT; path=/Ex05Cookie; domain=localhost; HttpOnly
Cookie2=value2; expires=Sat, 29 Mar 2014 06:21:54 GMT; path=/Ex05Cookie; domain=localhost:8080; HttpOnly
Run Code Online (Sandbox Code Playgroud)

唯一的区别是域属性,一个是localhost另一个有端口号.

这是我尝试请求时的HTTP标头http://localhost:8080/Ex05Cookie/:

GET /Ex05Cookie/ HTTP/1.1
Host: localhost:8080
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:20.0) Gecko/20100101 Firefox/20.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Cookie: Cookie1=value1
Connection: keep-alive
Cache-Control: max-age=0
Run Code Online (Sandbox Code Playgroud)

标头只包含域名为的Cookie1 localhost.

为什么我的firefox不发送Cookie2而不是Cookie1?

cookies http

8
推荐指数
1
解决办法
6743
查看次数

浏览器在后续请求中不发送cookie

使用cookie进行用户识别的项目.

当用户到达时,它会调用该服务(在localhost中运行),并且带有响应头的服务发送cookie如下所示:

curl 'http://127.0.0.1:8000/api/v1.0/tracking' -X OPTIONS -H 'Access-Control-Request-Method: POST' -H 'Origin: http://local.com:8080' -H 'Access-Control-Request-Headers: content-type,x-forwarded-for' --compressed
Run Code Online (Sandbox Code Playgroud)

响应标头如下所示:

HTTP/1.1 200 OK
Connection: keep-alive
Keep-Alive: 60
Access-Control-Allow-Headers: Content-Type, Access-Control-Allow-Headers, x-forwarded-for
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: POST, PATCH, GET
Content-Length: 0
Content-Type: text/plain; charset=utf-8
Set-Cookie: id=random_id_123_123; expires=Wed, 06-Dec-2017 10:57:36 GMT; Domain=.local.com; Path=/
Run Code Online (Sandbox Code Playgroud)

然后在特定用户操作后,应用程序发送以下API请求:

curl 'http://127.0.0.1:8000/api/v1.0/tracking?event=video_added&user_id=123123123' -H 'Origin: http://local.com:8080' -H 'Accept: */*' -H 'Referer: http://local.com:8080/' -H 'Connection: keep-alive' --compressed
Run Code Online (Sandbox Code Playgroud)

上述请求的请求标头如下所示:

GET api/v1.0/tracking?event=video_added&user_id=123123123 HTTP/1.1
Host: 127.0.0.1:8000
Connection: keep-alive
Accept: */*
Origin: http://local.com:8080
User-Agent: My user agent
Referer: …
Run Code Online (Sandbox Code Playgroud)

python cookies python-3.x web sanic

8
推荐指数
1
解决办法
944
查看次数

我无法在本地主机上设置 cookie

我在 localhost:3333 上使用带有 cookie 解析器中间件的 Express 框架的 NodeJS。我的前端由 localhost:3000 上的 react dev 服务器提供服务。这是我第一次尝试使用 cookie。以下是我为 cookie 设置的选项:{ expires: maxAge , httpOnly: true, sameSite: 'none', secure: true, domain: null }。我也尝试过使用和不使用 sameSite、httpOnly 和安全选项。以及域=本地主机。

这是我在尝试设置 cookie 时得到的 http 响应的标头:

Set-Cookie:

sessionid=119faa6a3fcfab0628998ff2592e04ceb06cda12; Path=/; Expires=Sun, 29 Jan 2023 15:20:16 GMT; HttpOnly; Secure; SameSite=None
Run Code Online (Sandbox Code Playgroud)

但问题是 cookie 没有出现在 Chrome 的 Application/Cookies 或 Firefox 的 Storage/Cookies 中。我也无法访问 cookie 作为不同端点上的请求 cookie。然而,它确实适用于我的 vps。vps 使用正确的域名和代理,因此所有请求似乎都来自同一个域/端口,我不知道这是否有所不同。

我还尝试将 127.0.0.1 dev.mylocalhost.com 添加到 /etc/hosts 以在 localhost 上伪造域名。只是阅读一些关于此的内容,不太确定它应该如何工作。我不拥有这个域,这只是在我本地的 /etc/hosts 文件中。我还没有尝试在本地主机上使用代理,所以 cookie 是从服务器上的端口 3333 上设置的,而客户端在端口 3000 …

cookies localhost setcookie

8
推荐指数
1
解决办法
4655
查看次数

Simplemembership ASPXAUTH cookie在两个单独的Web项目上进行验证

我正在使用SimpleMembership开发一个ASP.NET MVC4项目,它在你登录时会生成一个ASPXAUTH cookie.它似乎工作得很好,但是今天我打开了另一个MVC4项目,只是注意到我已经登录了在.

这非常奇怪,因为新项目实际上没有在数据库中定义任何用户.更令人不安的是,当我点击新项目的"注销"时,它将我从原始网站中删除.

两个站点都在不同的端口上运行,但都在localhost上运行.当检查请求以查看它返回"IsAuthenticated == true"的原因时,我注意到ASPXAUTH cookie被发送到两个站点,并且调试器中cookie的"domain"参数为"null".这让我觉得可能cookie正在生成为"无域"cookie(我不知道这样的事情是否可能,说实话!),并查看了web.config设置以指定域名:

<authentication mode="Forms">
  <forms loginUrl="~/Account/Login" timeout="2880" domain="http://localhost:56626" />
</authentication>
Run Code Online (Sandbox Code Playgroud)

不幸的是,设置"domain"参数已使cookie停止工作.我已经尝试了所有排列(使用http,没有http,有端口,没有端口等),每次我指定一个域时,浏览器都会收到带有正确指定域名的cookie(我在Chrome开发者工具中检查过它),但随后无法将其发送回后续请求的服务器.

所以,我对这里发生的事情感到很困惑.这是否是由于未在某处正确设置某些内容而导致的安全漏洞?或者,ASPXAUTH cookie将在同一域上的两个不同端口上的两个完全不同的Web应用程序上授权用户,这是完全正常的行为吗?我会在网络主机上测试这个,但遗憾的是我现在无法访问运行MVC4的任何内容.

提前致谢.

asp.net-mvc forms-authentication .aspxauth asp.net-mvc-4 simplemembership

7
推荐指数
1
解决办法
2255
查看次数