添加 Access-Control-Allow-Origin 后,仍然出现“请求的资源上没有“访问控制允许来源”标头”错误:*

Posted

技术标签:

【中文标题】添加 Access-Control-Allow-Origin 后,仍然出现“请求的资源上没有“访问控制允许来源”标头”错误:*【英文标题】:Still having "No 'Access Control Allow Origin' header is present on the requested resource" error after adding Access-Control-Allow-Origin: * 【发布时间】:2017-04-14 10:10:12 【问题描述】:

我知道这个问题之前已经解决过很多次了。但是我可以在响应中看到标题上已经有 Access-Control-Allow-Origin。

这是我的请求代码:

var req = 
  method: 'POST',
  url: "integration-api.domain.com/login",
  headers: 
    'Content-Type': 'application/x-www-form-urlencoded',
    'X-AN-WebService-IdentityKey': identitykey,
    'X-AN-WebService-CustomerAuthToken': customerAuth,
    'X-AN-WebService-CustomerTransientToken': transientToken,
    'Cache-Control': 'no-cache'
  ,
  data: datatopass
;

console.log(datatopass);

return $http(req).then(function(response)
  console.log(response);
  return response.data;
, function(err) 
  console.log(err);
  return err;
);

这是在 chrome 上查看时的请求标头:

Accept/Accept-Encoding:gzip、deflate、sdch、brAccept-Language :en-US,en;q=0.8Access-Control-Request-Headers:x-an-webservice-identitykeyAccess-Control-Request -方法:POSTCache-Control:no-cacheConnection:keep-aliveHost:integration-api.domain.comOrigin:http://OriginDomainPragma:no-cacheReferer :http://OriginDomain/apitest/User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (Khtml, like Gecko) Chrome/54.0.2840.99 Safari/537.36

那么预检响应是:

Access-Control-Allow-Headers:x-an-webservice-identitykey, origin, content-type, x-an-webservice-customerauthtoken, x-an-webservice-deviceauthtoken,x- an-webservice-customertransienttoken,x-an-webservice-versionAccess-Control-Allow-Origin:* 日期:格林威治标准时间 2016 年 11 月 30 日星期三 06:56:50

服务器是否需要在响应中添加 Access-Control-Allow-Method 或任何其他标头,或者我是否需要在我的代码中添加一些内容?

我正在使用 angular.js 调用对 url 的 $http 调用

【问题讨论】:

你是如何解决这个问题的 【参考方案1】:

你也需要允许方法类型

"Access-Control-Allow-Origin", "*";
'Access-Control-Allow-Methods', 'OPTIONS,GET,PUT,POST,DELETE";
"Access-Control-Allow-Headers", "X-Requested-With, Content-Type";

请看这个答案。 Response to preflight request doesn't pass access control check in NodeJS

【讨论】:

非常感谢!那么服务器端团队也需要添加这些 CORS 选项吗? 是的,如果要从不同的域调用 api。 我有允许的方法,还是同样的问题

以上是关于添加 Access-Control-Allow-Origin 后,仍然出现“请求的资源上没有“访问控制允许来源”标头”错误:*的主要内容,如果未能解决你的问题,请参考以下文章

Wordpress 警告:call_user_func_array() 期望参数 1 是有效的回调,数组必须正好有两个成员

SpringBoot跨域

SpringBoot跨域

SpringBoot跨域

如何通过CORS传递cookie?

node.js创建简单服务测试请求数据