首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不是跨域的。XMLHttpRequest无法加载localhost:portNo1 1。:访问控制-允许-原产地不允许portNo2 2

不是跨域的。XMLHttpRequest无法加载localhost:portNo1 1。:访问控制-允许-原产地不允许portNo2 2
EN

Stack Overflow用户
提问于 2013-08-22 03:31:32
回答 1查看 547关注 0票数 1

我在localhost上用BaseHTTPServer.HTTPServer创建了一个服务器:portNo1 1

客户端位于localhost:portNo2 2,在客户端,我正在发出如下jQuery $.ajax POST请求:

代码语言:javascript
复制
var request = $.ajax({
        url: "http://localhost:portNo1",
        type: "post",
        dataType: 'json',
        data: json_data
    });

在服务器端,服务器从客户端获取数据并使用其数据进行回复。

代码语言:javascript
复制
def do_POST(self):
    # Get client data
    length = int(self.headers.getheader('content-length'))        
    data_string = self.rfile.read(length)
    print data_string;        
    # Create response object        
    jsonObjStr = json.dumps(jsonObj);
    self.send_response(200)        
    self.end_headers()
    self.wfile.write(jsonObjStr);

所发生的情况是,服务器正在获取我发送的数据,但是没有对客户端的答复,$.ajax对象的失败事件的回调在客户端执行(Error msg)。我调试并验证了jsonObj中没有任何东西。但是我看不到self.wfile对象中的是什么。

在JS控制台,我还会得到以下错误(它显示在Google的JS控制台上,而它没有显示在Firefox JS控制台中):

XMLHttpRequest cannot load localhost:portNo1 . Origin localhost:portNo2 is not allowed by Access-Control-Allow-Origin. client.html:1

Google Chrome的JS控制台指向html文件,但这对我来说也没有意义。

我检查了网站,似乎这个错误通常是由跨域请求引起的。但是,我正在从一个本地主机端口到另一个本地主机端口进行通信。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-22 03:35:57

这就是问题所在。跨源限制不允许您在没有发送Access-Control-Allow-Origin: *头的情况下跨端口进行通信。

更好的解决方案是使用Nginx或其他two服务器将这两个正在运行的应用程序反向代理到同一个域和端口。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18371220

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档