Reactjs redux同构获取访问控制允许源
我已经编写了一个redux应用程序,我正在使用webpack dev server在本地运行。(端口8080)。我正在尝试连接到在端口9000本地运行的web服务 我连接到web服务的代码如下Reactjs redux同构获取访问控制允许源,reactjs,redux,Reactjs,Redux,我已经编写了一个redux应用程序,我正在使用webpack dev server在本地运行。(端口8080)。我正在尝试连接到在端口9000本地运行的web服务 我连接到web服务的代码如下 return fetch(`http://localhost:9000/movies/${dimensionName.toLowerCase()}list`) .then(response => response.json()) .then(json => dispatch(r
return fetch(`http://localhost:9000/movies/${dimensionName.toLowerCase()}list`)
.then(response => response.json())
.then(json =>
dispatch(receivedDimensionAttributesSuccess(dimensionName, json))
)
.catch(error =>
dispatch(receivedDimensionAttributesError(dimensionName, error))
);
这会收到一个错误
Fetch API cannot load http://localhost:9000/movies/yearlist. No 'Access-
Control-Allow-Origin' header is present on the requested resource. Origin
'http://localhost:8080' is therefore not allowed access. If an opaque response
serves your needs, set the request's mode to 'no-cors' to fetch the resource
with CORS disabled.
我在谷歌上搜索这个问题,找到了这个帖子
但我不喜欢涉及切换到不同库/中间件的解决方案
如何解决同构获取库的问题。您可以阅读此内容
fetch(url[,init])
将init参数设置为允许跨域请求
尝试访问控制允许源代码是您可以在客户端控制的。这是浏览器的安全限制,需要与服务器协商 服务器可以从任何端点检索数据,但对于浏览器应用则不同。出于安全原因,您只能通过XHR从加载网页的同一服务器加载数据。 如果您需要从不同的服务器(例如外部API)加载数据,浏览器要求服务器响应,表明您被允许 请参阅上的“跨域请求”部分中的说明 你必须使用
let header = new Headers({
'Access-Control-Allow-Origin':'*',
'Content-Type': 'multipart/form-data'
});
而不是
let defaultOptions = {
url:'',
method:'POST',
mode: 'cors',
headers:{
'Access-Control-Allow-Origin':'*'
},
body:null,
};
要启用cors只需添加
{mode:'no-cors',}
即可禁用no'Access-
控件“允许原点”标题。有关更多信息,请参考以下url:
您的web服务允许CORS吗?啊。。。。我不知道需要在Web服务端配置CORS。我做了一个快速搜索,找到了这个。实施此操作后,问题已得到修复。可能的重复操作可通过完全删除读取响应的尝试来防止出现错误。因为代码需要读取响应,所以这并不能解决问题。
return fetch(`http://localhost:9000/movies/${dimensionName.toLowerCase()}list`**,{mode:'no-cors'**,})
.then(response => response.json())