当前位置: 首页 > 知识库问答 >
问题:

我得到“没有'Access-Control-Allow-Origin'头错误”,即使我设置了它[重复]

许淳
2023-03-14
function Hello($scope, $http) {
  $http({
    method: 'GET',
    url: 'http://localhost:8080/races',
    headers: {
      'Access-Control-Allow-Headers': 'accept',
      'Access-Control-Allow-Methods': 'GET',
      'Access-Control-Allow-Origin': '*'
    },
  }).then(function successCallback(response) {
    $scope.races = response;
  }, function errorCallback(response) {
    // called asynchronously if an error occurs
    // or server returns response with an error status.
});
XMLHttpRequest cannot load http://localhost:8080/races. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:63343' is therefore not allowed access. The response had HTTP status code 403.

HTML:

<!doctype html>
<html ng-app>
<head>
<title>Hello AngularJS</title>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.8/angular.min.js"></script>
<script src="hello.js"></script>
</head>

<body>
<div ng-controller="Hello">
<p>The ID is {{races.raceId}}</p>
<p>The name is {{races.raceName}}</p>
</div>
</body>
</html>

当我打开localhost:8080/races时,我可以完全看到JSON:

[{"raceId":8446,"raceName":"test1"},{"raceId":8447,"raceName":"test2"}]

共有1个答案

常经赋
2023-03-14

服务器需要发送CORS报头。

跨来源资源共享标准通过添加新的HTTP标头来工作,这些标头允许服务器描述允许使用web浏览器读取信息的来源集。此外,对于可能对用户数据造成副作用的HTTP请求方法(特别是对于GET以外的HTTP方法,或者对于某些MIME类型的POST用法),规范要求浏览器对请求进行“预置”,使用HTTP OPTIONS请求方法从服务器请求受支持的方法,然后在服务器“批准”之后,使用实际的HTTP请求方法发送实际的请求。服务器还可以通知客户端是否应该随请求一起发送“凭据”(包括cookie和HTTP身份验证数据)。

多读点。

 类似资料:
  • 我知道这件事以前被处理过很多次。但是我可以在响应中看到头上已经有了Access-Control-Allow-Origin。 accept:/ accept-encoding:gzip,deflate,sdch,br access-control-request-headers:x-an-webservice-identitykey access-control-request-method:pos

  • 问题内容: 将web.xml移植到Java配置后出现以下问题 根据一些Spring参考,尝试了以下尝试: 所选择的值来自有效的web.xml过滤器: 有什么想法为什么Spring java config方法不能像web.xml文件那样工作? 问题答案: 将CorsMapping从更改方法。 为整个应用程序启用CORS很简单: 你可以轻松更改任何属性,以及仅将此CORS配置应用于特定的路径模式: 控

  • 问题内容: 我正在本地虚拟主机(http://foo.app:8000)上运行有角度的应用程序。它使用发出了对另一个本地VirtualHost(http://bar.app:8000)的请求。 当然,在Chrome开发者工具的网络标签中,我看到了OPTIONS请求,响应中包含标题: 但是,POST请求被取消,并出现以下错误: 所请求的资源上没有“ Access-Control-Allow-Orig

  • 我正在本地虚拟主机(http://foo.app:8000)上运行一个angular应用程序。它正在使用向另一个本地虚拟主机(http://bar.app:8000)发出请求。 在Chrome Developer Tools的Network选项卡中,我当然会看到选项请求,响应包括标题: 也设置为。

  • 虽然已经通过API网关设置了CORS,并且设置了头,但在尝试在Chrome内从AJAX调用API时,我仍然收到以下错误: XMLHttpRequest无法加载http://xxxxx.execute-api.us-west-2.amazonaws.com/beta/yyyyy。请求的资源上没有“access-control-allow-origin”标头。因此不允许访问源“null”。响应的HTT