仍然对使用XMLHTTPRequest跨域感到困惑

时间:2011-08-17 19:58:22

标签: xmlhttprequest

我需要将数据发布到不同域中的服务器。该服务器使用SSL并期望数据采用JSON字符串的形式。我试图通过javascript执行此操作。

我创建数据并使用JSON.stringify()将其转换为正确的格式。然后我发送如下:

var url = "https://api.postageapp.com/v.1.0/send_message.json";

http=new XMLHttpRequest();
http.open("POST", url, true);

http.setRequestHeader("Content-type", "application/json");
http.setRequestHeader("Connection", "close");

// create the data in a data structure named post_data
var JSONText = JSON.stringify(post_data);
http.send(JSONText);

执行数据包跟踪我看到我的客户端与服务器进行握手,但两次服务器回复“加密警报”,包括上次发回数据包的时间。浏览器调试器始终显示405 - Method Now Allowed错误。

我错过了什么让这个工作?当他们在他们的域内尝试它时运行良好。

3 个答案:

答案 0 :(得分:1)

您需要服务器返回类似的HTTP标头:

header('Access-Control-Allow-Origin: *');

实例: Making cross domain JavaScript requests using XMLHttpRequest or XDomainRequest

答案 1 :(得分:0)

你不能做那样的跨域帖子。

替代方法是使用Server side proxy(阅读此链接以获得有关为何不能这样做的详细说明)或iframe approach

答案 2 :(得分:0)

严格地说,它不可能(由于安全问题),但是使用名为JSONP的变通方法,您可以使用RESTful Web服务实现此目的。

请参阅以下链接。 http://en.wikipedia.org/wiki/JSONP

MS有一些代码,您可以在互联网上的某处下载代码被称为特定绑定。

  • JSONPBehaviour.cs
  • JSONPBindingElement.cs
  • JS​​ONPBindingExtension.cs
  • JS​​ONPEncoderFactory.cs
相关问题