Reactjs 在本地主机上调用 Cakephp Api : Cross-Origin 请求被阻止 (CORS)
Reactjs call Cakephp Api both on localhost : Cross-Origin Request Blocked (CORS)
我是 React js 的新手。因此,为了学习起见,我将它安装在我的系统上,即 运行 在本地主机上,端口为 3000。我还在 xampp 上安装了 cakephp 版本 2.98,这又是 运行 在本地主机上,但带有端口8082。
现在,当我尝试调用从 React js 到我的 localhost:8082 上的 cakephp api 的获取操作时,我收到错误消息:
"Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://localhost:8082/cakephp298/users/apitest. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing)."
我尝试在我的索引文件的脚本标签中添加 crossorigin 属性,但它不起作用。
我正在寻找将 headers 添加到获取操作的解决方案。
------这是我的反应代码----
import React, { Component } from 'react';
class Login extends Component {
constructor() {
super();
this.clicksfile = this.clicksfile.bind(this);
}
render() {
return (
<div id="mc_embed_signup">
<input name="EMAIL" placeholder="Email address" required type="email" />
<input name="password" type="password" placeholder="Password" required />
<button onClick={ this.clicksfile } className="primary-btn hover d-inline-flex align-items-center">
<span className="mr-10">Go</span><span className="lnr lnr-arrow-right" /></button>
<div className="info" />
</div>
);
}
clicksfile(e) {
fetch('http://localhost:8082/cakephp298/users/apitest').then(response => response.json()).then(response => {
console.log('details fetched successfully they are');
console.log(response);
}).catch(error => {
console.log('There is some error ashish');
console.log(error);
});
}
}
有什么建议吗?
谢谢你
这不是 React 的问题,而是 CakePHP 应用程序应用的限制。
Cross-Origin Resource Sharing (CORS) is a mechanism that uses
additional HTTP headers to tell a browser to let a web application
running at one origin (domain) have permission to access selected
resources from a server at a different origin.
这意味着您不能在未明确允许的情况下向其他域或端口发送请求。在这种情况下,您 运行 对 http://localhost:3000/
作出反应,并且您正在尝试请求 http://localhost:8082/
。
要启用此功能,您需要将以下 HTTP 响应 header 添加到 CakePHP 应用程序的端点。
Access-Control-Allow-Origin: http://localhost:3000
在 CakePHP 中,它看起来像这样
$response = $response->withHeader('Access-Control-Allow-Origin', 'http://localhost:3000');
您可以阅读更多相关内容HTTP header here and how to set headers in CakePHP here
我是 React js 的新手。因此,为了学习起见,我将它安装在我的系统上,即 运行 在本地主机上,端口为 3000。我还在 xampp 上安装了 cakephp 版本 2.98,这又是 运行 在本地主机上,但带有端口8082。 现在,当我尝试调用从 React js 到我的 localhost:8082 上的 cakephp api 的获取操作时,我收到错误消息:
"Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://localhost:8082/cakephp298/users/apitest. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing)."
我尝试在我的索引文件的脚本标签中添加 crossorigin 属性,但它不起作用。 我正在寻找将 headers 添加到获取操作的解决方案。
------这是我的反应代码----
import React, { Component } from 'react';
class Login extends Component {
constructor() {
super();
this.clicksfile = this.clicksfile.bind(this);
}
render() {
return (
<div id="mc_embed_signup">
<input name="EMAIL" placeholder="Email address" required type="email" />
<input name="password" type="password" placeholder="Password" required />
<button onClick={ this.clicksfile } className="primary-btn hover d-inline-flex align-items-center">
<span className="mr-10">Go</span><span className="lnr lnr-arrow-right" /></button>
<div className="info" />
</div>
);
}
clicksfile(e) {
fetch('http://localhost:8082/cakephp298/users/apitest').then(response => response.json()).then(response => {
console.log('details fetched successfully they are');
console.log(response);
}).catch(error => {
console.log('There is some error ashish');
console.log(error);
});
}
}
有什么建议吗? 谢谢你
这不是 React 的问题,而是 CakePHP 应用程序应用的限制。
Cross-Origin Resource Sharing (CORS) is a mechanism that uses additional HTTP headers to tell a browser to let a web application running at one origin (domain) have permission to access selected resources from a server at a different origin.
这意味着您不能在未明确允许的情况下向其他域或端口发送请求。在这种情况下,您 运行 对 http://localhost:3000/
作出反应,并且您正在尝试请求 http://localhost:8082/
。
要启用此功能,您需要将以下 HTTP 响应 header 添加到 CakePHP 应用程序的端点。
Access-Control-Allow-Origin: http://localhost:3000
在 CakePHP 中,它看起来像这样
$response = $response->withHeader('Access-Control-Allow-Origin', 'http://localhost:3000');
您可以阅读更多相关内容HTTP header here and how to set headers in CakePHP here