标签: setcookie

带有显式域的localhost上的Cookie

我一定错过了一些关于cookie的基本知识.在本地主机上,当我设置在服务器端的cookie,明确指定域为localhost(或.localhost).某些浏览器似乎没有接受cookie.

Firefox 3.5:我在Firebug中检查了HTTP请求.我看到的是:

Set-Cookie:
    name=value;
    domain=localhost;
    expires=Thu, 16-Jul-2009 21:25:05 GMT;
    path=/
Run Code Online (Sandbox Code Playgroud)

或者(当我将域设置为.localhost时):

Set-Cookie:
    name=value;
    domain=.localhost;
    expires=Thu, 16-Jul-2009 21:25:05 GMT;
    path=/
Run Code Online (Sandbox Code Playgroud)

在任何一种情况下,都不会存储cookie.

IE8:我没有使用任何额外的工具,但cookie似乎也没有存储,因为它不会在后续请求中发回.

Opera 9.64: localhost和.localhost都工作,但是当我检查Preferences中的cookie列表时,域名设置为localhost.local,即使它列在localhost下(在列表分组中).

Safari 4: localhost和.localhost都可以工作,但它们在Preferences中始终列为.localhost.另一方面,没有显式域的cookie,它显示为localhost(无点).

localhost有什么问题?由于存在这么多的不一致,必须有一些涉及localhost的特殊规则.另外,我不完全清楚为什么域名必须以点为前缀?RFC 2109明确声明:

Domain属性的值不包含嵌入点或不以点开头.

为什么?该文件表明它必须对安全做些什么.我不得不承认我没有阅读整个规范(稍后可能会这样做),但听起来有点奇怪.基于此,在localhost上设置cookie是不可能的.

cookies setcookie

169
推荐指数
7
解决办法
19万
查看次数

AngularJS会忽略HTTP标头中的Set-Cookie

我正在开发一个基于客户端的AngularJS和服务器端的Java for my API(Tomcat + Jersey for WS)的应用程序.

我的API的某些路径受到限制,如果用户没有会话,则返回的响应状态为401.在客户端,拦截401 http状态以将用户重定向到登录页面.

用户通过身份验证后,我会在服务器端创建会话

httpRequest.getSession(true);
并且发送给客户端的响应确实在其标头中有Set-cookie指令:

Set-Cookie:JSESSIONID=XXXXXXXXXXXXXXXXXXXXX; Domain=localhost; Path=/api/; HttpOnly

问题是cookie永远不会放在客户端.当我检查localhost域的cookie时它是空的,因此下一个请求的头部没有这个cookie,客户端仍然无法访问我的API的受限路径.

客户端和服务器位于同一个域中,但它们没有相同的路径和相同的端口号:

客户: http://localhost:8000/app/index.html

服务器: http://localhost:8080/api/restricted/

附加信息:双方都启用了CORS:

"Access-Control-Allow-Methods", "GET, POST, OPTIONS"
"Access-Control-Allow-Origin", "*"
"Access-Control-Allow-Credentials", true

任何使Set-cookie正常工作的想法?这是与AngularJS相关的问题吗?

javascript cookies setcookie angularjs

67
推荐指数
5
解决办法
8万
查看次数

子域的域集cookie

我查看了很多关于cookie的问题,但我没有找到关于我的问题的答案.我有以下场景:

用户在example.com上创建登录,并且应该获得cookie,但仅限于子域fuu.example.com.我生成以下HTTP标头部分:

Set-Cookie: name=TestUser; Domain=fuu.example.com; Path=/; secure; HttpOnly 
Run Code Online (Sandbox Code Playgroud)

但是当我向https://fuu.example.com发出请求时,cookie将不会添加到请求中.我想知道example.com是否有可能设置cookie fuu.example.com.我知道example.com也可能.example.comexample.com的所有子域设置一个cookie,但这不是我想要的.

如何为子域设置cookie?我没有在子域的请求中看到cookie.

cookies http setcookie

44
推荐指数
2
解决办法
8万
查看次数

除了CURLOPT_COOKIEFILE之外,我如何使用PHP curl发送cookie?

表格提交后,我正在从网站上抓取一些内容.问题是脚本时不时地失败,比如说5个脚本失败了2次.我正在使用php curl,COOKIEFILE和COOKIEJAR来处理cookie.但是,当我观察我的浏览器发送的标题(从我的浏览器访问目标网站并使用实时http标头)和php发送的标题时,看到有很多不同之处.

我的浏览器发送了比php curl更多的cookie变量.我认为这种差异可能是因为javascript可用于设置大多数cookie,但我不确定这一点.

我正在使用下面的代码进行抓取,我正在显示我的浏览器和php curl的已发送标题:

$ckfile = tempnam ("/tmp", 'cookiename');

$url = 'https://www.domain.com/firststep';
$poststring = 'variable1=4&variable2=5';
$ch = curl_init ($url);
curl_setopt ($ch, CURLOPT_COOKIEJAR, $ckfile);
curl_setopt ($ch, CURLOPT_COOKIEFILE, $ckfile);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt ($ch, CURLOPT_POST, 1);
curl_setopt ($ch, CURLOPT_POSTFIELDS, $poststring);
$output = curl_exec ($ch);
curl_close($ch);



$url = 'https://www.domain.com/nextstep';
$poststring = 'variableB1=4&variableB2=5';
$ch = curl_init ($url);
curl_setopt ($ch, CURLOPT_COOKIEJAR, $ckfile);
curl_setopt ($ch, CURLOPT_COOKIEFILE, $ckfile);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, …
Run Code Online (Sandbox Code Playgroud)

php cookies curl setcookie

38
推荐指数
2
解决办法
11万
查看次数

即使在设置 SameSite=None 后,Safari 也不发送 cookie;安全的

我们的应用程序使用 cookie 来记住用户登录。我们进行的每个身份验证 API 调用,浏览器都会在 API 请求中附加服务器设置的 HTTPonly cookie 并进行身份验证。在 Mojave 发布后,这种行为似乎在 safari 中被打破了。

我阅读了 safari 和我们的服务器团队SameSite=None;Secure在设置 cookie 时添加的跨站点 cookie 安全性。即使在那之后,它仍然不起作用。

Set-Cookie: my_cookie=XXXXX; path=/; secure; HttpOnly; SameSite=None

请建议或提供来自实际找到解决方案的人的链接。

javascript cookies safari setcookie samesite

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

setcookie()不会在Google Chrome中设置Cookie

我正在阅读一些关于如何设置cookie的PHP教程.我注意到在FF4和IE9上成功设置了cookie,但它没有在Chrome中设置(11.0.696.60).PHP文件是从XAMPP(localhost)提供的.

我试过w3schools的例子:

<?php
setcookie("user", "Alex Porter", time()+3600);
?>
Run Code Online (Sandbox Code Playgroud)

并从此站点(对于localhost环境):

<?php
setcookie("username", "George", false, "/", false);
?>
Run Code Online (Sandbox Code Playgroud)

提前致谢.

php google-chrome setcookie

32
推荐指数
3
解决办法
5万
查看次数

检查PHP cookie是否存在以及是否未设置其值

我正在使用多语言网站,所以我尝试了这种方法:

echo $_COOKIE["lg"];
if (!isset($_COOKIE["lg"]))
    setcookie("lg", "ro");
echo $_COOKIE["lg"];
Run Code Online (Sandbox Code Playgroud)

我们的想法是,如果客户端没有lgcookie(因此,这是他们第一次访问此站点),那么lg = ro为该用户设置一个cookie .

一切正常,但如果我第一次进入这个页面,第一次和第二次echo都没有返回.只有当我刷新页面时才设置cookie,然后echo打印出我期待的"ro"字符串.

如何设置此cookie以便echo在第一次访问/页面加载时从第二个看到它的值?应该无需刷新页面或创建重定向.

php cookies setcookie

32
推荐指数
2
解决办法
14万
查看次数

使用javascript设置跨子域cookie

我应该如何为这些功能添加域支持?我希望实现.example.com被声明为域,以便可以在example.com的所有子域中读取cookie.在目前的形式中,由于未设置域,因此只能从www.example.com读取

javascript setcookie

27
推荐指数
1
解决办法
5万
查看次数

如何使用Swift从NSURLSession获取cookie?

我有一个NSURLSession调用dataTaskWithRequest以便以这种方式发送POST请求

func makeRequest(parameters: String, url:String){
    var postData:NSData = parameters.dataUsingEncoding(NSASCIIStringEncoding)!
    var postLength:NSString = String(postData.length )
    var request = NSMutableURLRequest(URL: NSURL(string: url)!)
    var session = NSURLSession.sharedSession()
    request.HTTPMethod = "POST"

    var error:NSError?
    //request.HTTPBody = NSJSONSerialization.dataWithJSONObject(postData, options: nil, error: &error)
    request.HTTPBody = postData
    request.setValue(postLength, forHTTPHeaderField: "Content-Length")
    request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
    request.setValue("application/json", forHTTPHeaderField: "Accept")

    var task = session.dataTaskWithRequest(request, completionHandler: { (data, response, error) -> Void in

        println("Response:\(response)")

        // Other stuff goes here

})
Run Code Online (Sandbox Code Playgroud)

响应等于:

<NSHTTPURLResponse: 0x7fcd205d0a00> { URL: http://XXX.XXX.XXX:0000/*** } { status code: 200, headers { …
Run Code Online (Sandbox Code Playgroud)

cookies json setcookie nsurlsession swift

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

如何解析HttpWebResponse.Headers.Keys返回的Set-Cookie会话ID

我正在尝试使用ASP.NET网站创建一个HttpWebRequest/HttpWebResponse会话,以便稍后通过url params解析HTML表单(这部分我知道该怎么做),但我不明白如何解析和设置cookie如会话ID.在Fiddler中,它显示ASP.NET会话ID是通过Set-Cookie在对url的/ path请求的响应中返回的,但是如何提取此会话ID并将其设置为下一个HttpWebRequest的cookie ?我知道这个Set-Cookie标头可以在HttpWebResponse.Headers.Keys中找到,但有解析它的直接路径吗?谢谢!

c# cookies httpwebrequest httpwebresponse setcookie

24
推荐指数
3
解决办法
3万
查看次数