作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
好吧,我遇到了一个相当奇怪的问题。
我正在为用户创建一个登录实例。
当我发布没有 fetch()
的登录表单时,它可以工作。我的浏览器(Firefox 和 Chrome)正确设置了 cookie,我可以“通过身份验证”。
但是,当我通过 fetch()
发送数据时,后端不会 setcookie()
。
注意:假设凭据正确。
这是我的 PHP 登录脚本
$user = htmlentities($_POST['username'], ENT_QUOTES);
$pass = htmlentities($_POST['password'], ENT_QUOTES);
$remember = isset($_POST['rememberme']) ? true : false;
$login = $PHPAuth['auth']->login($user, $pass, $remember);
/**
* $PHPAuth == [
* 'config' => PHPAuthConfig(),
* 'auth' => PHPAuth()
*/
if($login['error']) {
echo json_encode($login);
} else {
// create new cookie
setcookie(
$PHPAuth['config']->cookie_name,
$login['hash'],
$login['expire'],
'/', # path
'localhost', # domain
false, # HTTPS
true # HTTP-ONLY
);
echo json_encode($login);
}
fetch()
脚本处于最低限度,仅请求 body
和 method
。我删除了所有额外的 header ,看看是否有帮助。但事实并非如此:
function postForm(url, data) {
return fetch(url, {
body: data,
method: 'post'
})
.then(response => response.json());
}
供引用:我正在使用这个PHPAuth图书馆。
最佳答案
默认情况下,fetch 不启用 cookie,您可以通过添加 credentials
选项并将其设置为 same-origin
来实现:
function postForm(url, data) {
return fetch(url, {
credentials: "same-origin",
body: data,
method: 'post'
})
.then(response => response.json());
}
了解有关 Request.credentials
的更多信息 at MDN .
关于javascript - 使用 fetch() 发布时未设置 Cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50767448/
在我们的数据库表上,我们使用两个唯一的非聚集索引来创建跨四个字段的唯一约束。我们使用两个,因为其中一个字段 ZipCode 是一个可为空的字段。如果表中存在一条包含 ZipCode 的 null 条目
我刚刚开始学习 Rails 3 教程,以便对框架有一点熟悉,但我在生成 schema.rb 时遇到了问题。我的操作系统是 Windows 7 x64、Ruby 1.9.2、MySQL2 gem 0.2
我是一名优秀的程序员,十分优秀!