【问题标题】:No 'Access-Control-Allow-Origin' header is present on the requested resource [duplicate]请求的资源上不存在“Access-Control-Allow-Origin”标头[重复]
【发布时间】:2017-07-21 22:59:05
【问题描述】:

我正在尝试通过 javascript 调用服务并收到以下错误:

XMLHttpRequest 无法加载 http://www.somthing.com/something.svc。 对预检请求的响应未通过访问控制检查:没有“Access-Control-Allow-Origin” 请求的资源上存在标头。 Origin 'http://www.somthing.com' 因此不允许访问。

我们也尝试过 jsonp ,但是不行!

我们尝试过如下设置cors证书,但没有任何乐趣

 $.ajax({
        type: 'GET',
        headers: {"Access-Control-Allow-Origin: *"},
        url: '//sharedservices.qa-worldventures.biz/MembershipService.svc/Subscriptions?source=DreamTrips&group=Perks&Locale=en-US',
        dataType: "json",
        contentType: "application/json",
        success: onSuccessGetSubscriptionsId
    });

你能进去吗?

【问题讨论】:

  • 您需要阅读 HTTP 访问控制 (CORS),例如。在 MND 上:developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS
  • “我们尝试过如下设置 cors 证书,但没有任何乐趣” - 你还没有理解 CORS 是如何工作的。远程方是必须允许连接的一方。
  • 但该服务正在与另一个网站合作,因此问题在于本地站点而不是远程站点
  • 是的,该服务可能与另一个网站一起使用的原因是,在 CORS 配置中,您的服务肯定会指定来自某些 URL 的访问权限,/ 路径而不是“*”。
  • 他们已经授予 * 访问权限,那么其他问题是什么?

标签: javascript c# ajax xmlhttprequest cors


【解决方案1】:

这听起来像 Cross Origin 问题,您发送请求的服务器不允许您请求的那种类型的标头,这就是您收到 pre-flight 响应的原因.

如果您有权访问服务器。尝试启用跨域支持。

Apache 中添加header("Access-Control-Allow-Origin":"*" )

您可以在此处查看如何启用跨域。 CORS Origin.

希望对你有帮助!!!

【讨论】:

  • 脚本中已经存在了吧? headers: {"Access-Control-Allow-Origin: *"},你说的有什么区别吗?
  • 它应该在服务器上。不是将发送请求的客户端。这样服务器就会知道同源策略是否允许这样做。
  • 服务器我无权访问,假设它在那里,还有其他问题吗?
猜你喜欢
  • 2020-07-11
  • 1970-01-01
  • 2014-04-09
  • 2013-11-29
  • 2014-07-28
  • 2014-01-19
相关资源
最近更新 更多