Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.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
在JavaScript中使用获取请求发送Cookie时遇到困难_Javascript_Cookies_Express - Fatal编程技术网

在JavaScript中使用获取请求发送Cookie时遇到困难

在JavaScript中使用获取请求发送Cookie时遇到困难,javascript,cookies,express,Javascript,Cookies,Express,我有两个独立的服务,一个React单页应用程序和一个expressAPI,我正在尝试使用新的fetch功能从SPA与API进行通信。由于这两个服务位于不同的域上,因此我在express应用程序中使用CORS中间件,以便从SPA向API发出请求。例如,我正在尝试使任何获取请求也包含cookies,以便我可以在express应用程序中验证cookies 在客户端: fetch('http://localhost:8000/hello', { credentials: 'include',

我有两个独立的服务,一个
React
单页应用程序和一个
express
API,我正在尝试使用新的
fetch
功能从SPA与API进行通信。由于这两个服务位于不同的域上,因此我在
express
应用程序中使用CORS中间件,以便从SPA向API发出请求。例如,我正在尝试使任何
获取
请求也包含cookies,以便我可以在
express
应用程序中验证cookies

在客户端:

fetch('http://localhost:8000/hello', { 
    credentials: 'include', 
    mode: 'cors' 
}).then(/* ... */)
在服务器端:

var app = express();

app.use(cors({ credentials: true });
app.use(cookieParser());

app.get('/hello', function (req, res) {
  // Try and find the cookies sent with the request
  console.log(req.cookies);

  res.status(200).json({ message: 'cookies received!' });
});
但是,无论我尝试什么,我仍然无法访问
请求
对象上的任何cookie,即使我可以使用
document.cookies
访问它们

示例cookie:

name: token
value: TOKEN_VALUE
domain: localhost
path: /
http: false
secure: false

有人对如何处理这个问题有什么建议吗?任何帮助都将不胜感激

您正在使用的fetch polyfill库在撰写本文时未达到规范要求。对于凭据,它希望'cors'为值,而不是'include'。我会在第264行编辑fetch.js的本地副本,以适应标准,提交一个pull请求,并寻找一个更好支持的polyfill库

见公开发行:


是否只是输入错误,您在
凭证“include
后没有结束报价?还有,你有JSFIDLE或Pnkr吗?是的,对不起!只是打字错误。遗憾的是,没有,因为它涉及一个服务器端组件。您可以共享您的客户端代码吗。我可以创建自己的服务器。问题中的客户端代码反映了我在问题中发布的获取请求。请求正在完成,并且我能够从我的服务器接收响应,但是没有Cookie被传递到服务器。已经有关于repo的请求来修复此问题:嗨,我有相同的问题。更改为“cors”而不是“include”并没有解决我的问题:(这是我的问题:即使在使用凭证作为include或使用whatg fetch 2.0.3后使用相同的组织,我仍然面临相同的问题。我必须使用最新版本,因为“cors”无效,并且fetch抛出错误。这是规范,我不认为“cors”是一个选项?