【发布时间】:2018-08-26 03:42:00
【问题描述】:
编辑:这只适用于 HapiJS 16- 版本
我有一个客户端在 react 和一个使用 HapiJS 的服务器。
在客户端,我尝试向服务器发出 POST 请求,但出现以下错误
选项http://localhost:3001/sentilize/ 404(未找到)localhost/:1 无法加载http://localhost:3001/sentilize/:对预检的响应 请求未通过访问控制检查:否 请求中存在“Access-Control-Allow-Origin”标头 资源。因此不允许使用原点“http://localhost:3000” 使用权。响应的 HTTP 状态代码为 404。
我在 3001 端口上运行服务器。我在 3000 上运行客户端。
任何帮助/指导将不胜感激。另外,我可以使用 POSTMAN 成功地向服务器发出 post 请求。只是来自 React 是行不通的。
这是我的 server.js
import Hapi from "hapi";
import { routes } from "./routes";
const server = Hapi.server({
host: "localhost",
port: 3001,
routes: { cors: true }
});
// Register Routes
routes.forEach(route => {
server.route(route);
});
// We need to install babel-polyfill
// because async and await are in es7
async function start() {
try {
await server.start();
} catch (err) {
console.log(err);
}
console.log("Hapii server is running");
}
start();
这是在前端进行调用的代码
fetchSentiment = () => {
axios
.post("/", {
sentence: this.state.value
})
.then(response => {
this.setState({ sentiment: response.data });
})
.catch(error => {
console.log("Error: ", error);
});
};
我有一个 axios 实例设置如下 (axios-sentiment.js)
import axios from "axios";
const instance = axios.create({
baseURL: "http://localhost:3001/sentilize"
});
export default instance;
【问题讨论】:
-
Postman 不会给你一个 cors 错误,这很正常。
-
cors: { origin: ['allowedhostnamehere'] }
-
为什么你的 cors 设置在路线内?
-
那行不通:(...我还能把它放在哪里?
-
使用 cors 启用扩展它将在谷歌浏览器中工作 chrome.google.com/webstore/detail/allow-control-allow-origi/…