【问题标题】:XmlHttpRequest cross-domain [duplicate]XmlHttpRequest 跨域 [重复]
【发布时间】:2014-02-18 21:52:05
【问题描述】:

我正在尝试向远程 Rest(put 方法)api 发出请求

var xhReq = new XMLHttpRequest();
xhReq.open("PUT", "http://api-easybib.apigee.com/2.0/rest/cite", true);
xhReq.setRequestHeader('Content-Type', 'application/json');
var jsonString = "{...}";

xhReq.send(JSON.stringify(jsonString));

var serverResponse = xhReq.responseText;

它失败了

没有“Access-Control-Allow-Origin”标头

虽然我通过rest客户端浏览器插件成功拨打电话

我错过了什么?

【问题讨论】:

    标签: javascript xmlhttprequest cross-domain put


    【解决方案1】:

    出于安全考虑,所有浏览器都不接受来自您网站的ajax跨域请求。

    为了让浏览器接受一个ajax跨域请求,服务器代码必须设置header“Access-Control-Allow-Origin”来响应通知浏览器它接受一个ajax跨域请求。

    在浏览器插件(例如:chrome 应用)中,chrome 允许开发人员配置跨域发送请求。因此您可以在 REST Client 插件中发送跨域请求。 (http://developer.chrome.com/apps/app_external.html#manifest)

    【讨论】:

      【解决方案2】:

      在您的服务器上添加 Access-Control-Allow-Origin 或使用 JSONP (见What is JSONP all about?

      【讨论】:

      • 你是指Rest服务器吗?
      • 是的,在 REST 服务器上,您可以添加 Access-Control-Allow-Origin 标头。
      • 它不是我的服务器。它是一项 Rest 服务,我知道它支持跨域,正如我提到的那样
      • 如果它支持客户端 JS 跨域请求,那么您不会收到关于它的错误,不包括授予客户端 JavaScript 权限的标头。
      猜你喜欢
      • 2014-04-04
      • 2011-03-09
      • 1970-01-01
      • 2013-01-17
      • 2014-07-13
      • 2011-06-23
      • 1970-01-01
      • 2011-06-28
      • 2012-04-03
      相关资源
      最近更新 更多