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,最外层,即在主对象中