No' Access-Control-Allow-Origin' Angular 4 app

时间:2017-06-09 02:06:36

标签: javascript angular xmlhttprequest cors

我正在尝试访问此地址: http://52.208.91.209:3000/?paging=1

手动访问可以正常工作。 通过Angular 4请求访问返回:

否'访问控制 - 允许 - 来源'标头出现在请求的资源上。起源' http://localhost:4200'因此不允许访问。

我用谷歌搜索了几个小时,但没有找到解决方案。

唯一的解决方案"我发现正在使用 Allow-Control-Allow-Origin 插件。

我尝试访问的地址不是我的。

我只是想尝试使用它。

在使用带角度CLI的ng服务时,我甚至读过关于代理但没有完全理解的内容。

我看到的所有解决方案都只是服务器端上的响应标头问题。但是,这不是我的服务器所以我无法配置它。

任何帮助将不胜感激。谢谢。

3 个答案:

答案 0 :(得分:3)

您可以更改前端JavaScript代码,而不是通过公共代理发出请求。

要尝试这样做,请更改您的代码以使用以下网址:

https://cors-anywhere.herokuapp.com/http://52.208.91.209:3000/?paging=1

这会导致请求转到https://cors-anywhere.herokuapp.com,这是一个开放的CORS代理,可以将请求发送到您想要的http://52.208.91.209:3000/?paging=1网址。

该代理获取响应,接受并向其添加Access-Control-Allow-Origin响应头,然后最终将其作为响应传递回您的请求前端代码。

因此,最终因为浏览器看到带有Access-Control-Allow-Origin响应标头的响应,浏览器允许您的前端JavaScript代码访问响应。

或者使用https://github.com/Rob--W/cors-anywhere/之类的代码来设置您自己的代理。

在这种情况下您需要代理,因为http://52.208.91.209:3000/?paging=1本身不会发送Access-Control-Allow-Origin响应标头 - 在这种情况下,您的浏览器将不允许您的前端JavaScript代码访问该服务器的响应跨来源。

https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS有更多详情。

答案 1 :(得分:0)

您无法以您希望的方式从浏览器访问该API。有一些安全措施可以防止这种情况发生。如果您不控制数据源,则无法执行任何操作来解决此问题。您唯一的选择是让您自己的服务器请求数据,然后通过您的服务器获取数据。

编辑:如果您只计划在本地运行它,您实际上可以执行此操作。 Chrome有标记可忽略此安全措施。如果您不打算在除您自己以外的任何机器上使用它,您可以强制执行Chrome以在本地允许此操作。

答案 2 :(得分:0)

我发现的解决方案是使用

与正确的主机构建我的项目
Traceback (most recent call last):
  File "test_run.py", line 27, in <module>
    volume = np.asarray(getVoxelFromMat(file_path, 64),dtype=np.bool)
  File "test_run.py", line 13, in getVoxelFromMat
    voxels = nd.zoom(voxels, (2,2,2), mode='constant', order=0)
  File "/home/vkv/anaconda3/lib/python3.6/site-packages/scipy/ndimage/interpolation.py", line 584, in zoom
    raise RuntimeError('input and output rank must be > 0')
RuntimeError: input and output rank must be > 0