Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.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 由于CORS选项飞行前,ReactJS无法发送POST请求_Javascript_Node.js_Reactjs_Express_Graphql - Fatal编程技术网

Javascript 由于CORS选项飞行前,ReactJS无法发送POST请求

Javascript 由于CORS选项飞行前,ReactJS无法发送POST请求,javascript,node.js,reactjs,express,graphql,Javascript,Node.js,Reactjs,Express,Graphql,每当我向服务器发送POST请求时,OPTIONS总是被返回 我有一个非常简单的登录应用程序,使用React和Apollo。当我提交表单时,应使用POST请求将变异发送到服务器,但选项总是截获 正如您在这里看到的(使用chrome): 但是当我使用Firefox时,在选项之后,接下来会请求POST,您可以在这里看到: 我知道我不能禁用飞行前选项,因为正如我所研究的,使用Content-Type:application/json/bodyParser.json()触发飞行前选项 但是我需要内容类

每当我向服务器发送
POST
请求时,
OPTIONS
总是被返回

我有一个非常简单的登录应用程序,使用
React
Apollo
。当我提交表单时,应使用POST请求将
变异
发送到服务器,但选项总是截获

正如您在这里看到的(使用chrome):

但是当我使用Firefox时,在
选项之后,接下来会请求POST,您可以在这里看到:

我知道我不能禁用飞行前选项,因为正如我所研究的,使用
Content-Type:application/json
/
bodyParser.json()
触发飞行前选项

但是我需要
内容类型:application/json
,以便
graphql
工作。但是,有没有任何可能的方法只发布请求,而忽略选项? 我需要POST请求返回的
this.props.data

所以我可以将令牌存储在客户端浏览器的本地存储中

我的问题是:

  • 由于选项(chrome),POST请求从未发生
  • 我无法访问React组件中的
    this.props.data
    ,因为
    OPTIONS
    总是在实际的POST之前返回第一个(在Firefox中)

我只想从POST请求中获取
数据
,您应该在CreateReact应用程序项目中使用代理

package.json
main对象中添加以下代理:

"/graphql": {
  "target": "http://localhost:8080/",
  "changeOrigin": true
}
这基本上是您从“”到“”的请求

还要更改代码以使用相对api url。所以现在应该是:

 uri: '/graphql'

这将对您的本地url进行api调用,节点服务器将把它代理到提到的目标。因此此处不涉及跨来源。

您的UI的URL是什么?@hr如果您使用的是create react应用程序,则可以代理您的请求。例如
“proxy”:{“/graphql”:{“target”:”http://localhost:8080“}}
我可以知道把它放在哪里吗?是的,我使用的是craIn package.json,最外层,即在主对象中