我公司的设置如下:
subdomain6.domain1.com
subdomain1.domain2.com
在每个站点上,请注意每个子域可以有一百个站点,用户可以登录.作为开发人员,我们必须在多个浏览器中测试前端,但是一旦登录后某些部分可能只需要一些工作.
我编写了一个用户脚本,可以保存用户名和密码(以及其他因保密而无法提及的详细信息).脚本通过填写登录表单并单击"提交"按钮来检查用户帐户是否存在.如果没有,它会为我们注册 - 从而使注册过程自动化.
在同一域上的子域之间共享cookie非常简单.如果我在subdomain1.domain1.com上,我可以保存一个可以通过subdomain2.domain1.com检索的cookie.但是,我还想为domain2保存这些.我似乎无法让这个工作.
我可以从这里看到两个解决方案 - 或者:
1)使用userscript附加iFrame,该用户脚本在domain2上加载站点.然后使用查询字符串来决定要设置什么,或者;
2)使用method ="POST"的表单,并简单地发布到每个域上的文件.
无论哪种方式都是资源密集型的,特别是如果cookie每次更改时都会更新.我们还有URL屏蔽功能.所以我们还必须考虑像abc.clientdomain1.com,abc.clientdomain2.com等网站.
有谁知道一个更简单的方法来实现这一目标?
我想使用SameSite=strict来保护我的 cookie 。但有没有办法让它能够单独被少数几个域访问呢?
我有一个curl脚本,充当客户端和主服务器之间的代理.
......
$field_array= array(
'Accept' => 'HTTP_ACCEPT',
'Accept-Charset' => 'HTTP_ACCEPT_CHARSET',
'Accept-Encoding' => 'HTTP_ACCEPT_ENCODING',
'Accept-Language' => 'HTTP_ACCEPT_LANGUAGE',
'Connection' => 'HTTP_CONNECTION',
'Host' => 'HTTP_HOST',
'Referer' => 'HTTP_REFERER',
'User-Agent' => 'HTTP_USER_AGENT'
);
$curl_request_headers=array();
foreach ($field_array as $key => $value) {
if(isset($_SERVER["$value"])) {
$server_value=$_SERVER["$value"];
$curl_request_headers[]="$key: $server_value";
}
};
$curl_request_headers[]="Expect: ";
session_write_close();
//Open connection
$curl_handle = curl_init();
curl_setopt($curl_handle,CURLOPT_COOKIE,session_name()."=".session_id().";");
//Set the url, POST data
curl_setopt($curl_handle, CURLOPT_URL, $curl_url);
curl_setopt($curl_handle, CURLOPT_POST, !empty($user_post_data));
curl_setopt($curl_handle, CURLOPT_POSTFIELDS, $user_post_data);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl_handle, CURLOPT_AUTOREFERER, TRUE);
curl_setopt($curl_handle, CURLOPT_HEADER, 1);
curl_setopt($curl_handle, CURLOPT_FOLLOWLOCATION, false);
curl_setopt($curl_handle, …Run Code Online (Sandbox Code Playgroud) 我正在为一个需要有条件地设置cookie的rails应用程序编写机架中间件组件.我目前正在试图设置cookie.从谷歌搜索它似乎应该工作:
class RackApp
def initialize(app)
@app = app
end
def call(env)
@status, @headers, @response = @app.call(env)
@response.set_cookie("foo", {:value => "bar", :path => "/", :expires => Time.now+24*60*60})
[@status, @headers, @response]
end
end
Run Code Online (Sandbox Code Playgroud)
它不会产生错误,但也不会设置cookie.我究竟做错了什么?
我可以在codeigniter中打印会话值print_r($this->session->userdata);
我如何在codeigniter中打印cookie?我刚刚设置了一个cookie:
$cookie = array(
'name' => 'test_cookie',
'value' => 'test',
'domain' => '/',
'secure' => TRUE
);
$this->input->set_cookie($cookie);
Run Code Online (Sandbox Code Playgroud)
我该如何打印上述cookie?
一直在Fiddler中查看Chrome的流量,发现了一些我觉得不明白的东西:
Set-Cookie: GAPS=1:ZYBtVMzURzU2umKMxZThJ2lVPxy3Hg:SvHhlG2k1Vy5pnA0;Path=/;Expires=Wed, 04-Nov-2015 20:44:37 GMT;Secure;HttpOnly;Priority=High
Run Code Online (Sandbox Code Playgroud)
我找不到任何有关Priority=High其用途的文档。这是什么意思?
我正在使用这个jquery.cookie插件,我需要将值设置为TRUE或NULL/FALSE.
我试图这样做:$.cookie('ff', true, { expires: 30, path: '/' });但它将值设置为字符串而不是布尔值.
有什么办法解决这个问题?
我正在尝试将我的Cookie与AngularJS存储为一个数组,以保持cookie文件的清洁.
我正在使用以下方法:
$cookies.put('myCookieArray',{'key1':'value1','key2':'value2'});
Run Code Online (Sandbox Code Playgroud)
现在,当我尝试使用以下方法检索它时:
getmycookiesback = $cookies.get('myCookieArray');
console.log(getmycookiesback.key1);
Run Code Online (Sandbox Code Playgroud)
我得到了一个undefined价值.
但是当我尝试使用它来检索它时:
console.log($rootScope.getmycookiesback);
Run Code Online (Sandbox Code Playgroud)
它检索[object Object].
我究竟做错了什么?我想从key1和key2获取值.
Chrome浏览器具有忽略Set-Cookie标头的悠久历史。其中一些原因被称为错误并已修复,而其他则是持久性的。它们都不容易在文档中找到。
我目前正在努力让chrome接受一个简单的会话cookie。Firefox和Safari似乎接受Set-Cookie的几乎所有符合RFC的字符串。Chrome顽固地拒绝承认Set-Cookie指令甚至是根据请求发送的(在开发者工具(网络)中不会显示)。卷曲看起来很好。
那么,有没有人拥有1)跨浏览器Set-Cookie格式的现代最佳实践,或2)有关导致Chrome浏览器出现问题的更多信息?
谢谢。
我们有以下配置:
testing.parentdomain.com
当您访问该域并创建一个购物篮时,我们会创建一个存储该购物篮价值的 cookie。cookie 域设置为.testing.parentdomain.com,它是 Httponly 并且有一个路径/
我们有一个想要访问 cookie 的子域。subdomain.testing.parentdomain.com
此子域调用父域上的端点,例如:testing.parentdomain.com/basketData。此调用是返回 JSON 的 GET 请求。
问题
问题是子域在发出请求时似乎没有发送 cookie 值,因此我们没有得到预期的响应。
尝试
查看其他问题,我们尝试过 CORS 和凭证更改。
作为附加说明,我们将以下 JS 与 webpack/babel 捆绑在一起。
我们的请求来自 AJAX,如下所示:
$.ajax({
url: url,
type: 'GET',
xhrFields: {
withCredentials: true
},
crossDomain: true
})
Run Code Online (Sandbox Code Playgroud)
服务器为子域和允许凭据设置了 CORS。在响应中,我们可以看到这些被返回。
access-control-allow-credentials: true
access-control-allow-origin:从上面的子域
是否有任何原因未将 cookie 与请求一起发送到父域?我们已经注销了服务器端响应中的 cookie,但它们并不像我们预期的那样存在。
:authority: testing.parentdomain.com
:method: GET
:path: /basket/data/
:scheme: https
accept: /
accept-encoding: gzip, deflate, br
accept-language: en-GB,en;q=0.9, en-US;q=0.8
来源:https
://subdomain.testing.parentdomain.com …
cookies ×10
setcookie ×10
jquery ×3
javascript ×2
php ×2
angularjs ×1
codeigniter ×1
cors ×1
cross-site ×1
curl ×1
http ×1
middleware ×1
rack ×1
ruby ×1
samesite ×1