Jquery ajax 不工作 - 没有“访问控制允许来源”

Posted

技术标签:

【中文标题】Jquery ajax 不工作 - 没有“访问控制允许来源”【英文标题】:Jquery ajax not working - No 'Access-Control-Allow-Origin' 【发布时间】:2015-09-21 15:56:13 【问题描述】:
<html>
    <head>
        <title></title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script>
$( document ).ready(function() 

$('#my-form')
  .submit( function( e ) 
    $.ajax( 
      url: 'http://111.111.111.111:5008/form',
      type: 'POST',
      data: new FormData( this ),
      processData: false,
      contentType: false,
      success: function (data) 
       alert("SUCCESS");
      ,
      error: function (textStatus, errorThrown) 
       alert("FAILED");
    
   );
    e.preventDefault();
   )


);
</script>   
    </head>
    <body>
        <div>
            <form id="my-form">
                    <div>
                        File:
                            <input type="file" name="file" />
                    </div>
                    <div>
                        <button type="submit">Submit</button>
                    </div>
            </form>
        </div>
    </body>
</html>

我需要提交一个表单,看看是否成功。该文件正在我的服务器端上传并且没有错误,但 ajax 说它失败(显示失败警报)。我打开控制台,它给出了错误:

XMLHttpRequest cannot load http://111.111.111.111:5008/form. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://111.111.111.111' is therefore not allowed access.

所以表格正在上传,因为我可以看到它来自我的数据库。我用谷歌搜索了这个错误,似乎我可以在我的 ajax 中使用 jsonp 作为数据类型。我试过了,但它不起作用,但我宁愿不使用它来解决安全风险,我也不需要那种数据类型。

【问题讨论】:

我认为没有理由否决这个问题.. 嘿,伙计,我在您的代码中没有看到任何错误,我已经检查过了。提交后完美发布表单内容。我认为您的服务中存在问题,写在111.111.111.111:5008/form .. ajax 等待特定时间段的响应,如果它不会抛出错误事件....或者检查这个***.com/questions/15412226/… 你可能需要设置代理服务器以便将 ajax 调用重定向到实际服务器(您必须编写重写规则才能重定向)。Upvoted ;) 【参考方案1】:

我找到了问题。从我的服务器返回的响应需要修改标头。标头需要允许所有来源。这是一个使用 Java (vertx.io) 的示例。

ctx.response().putHeader("Access-Control-Allow-Origin ", "*");

一旦我将它添加到我的服务器代码中,请求和响应就会根据需要工作。

【讨论】:

以上是关于Jquery ajax 不工作 - 没有“访问控制允许来源”的主要内容,如果未能解决你的问题,请参考以下文章

响应于预检要求不经过访问控制检查(JavaScript的)

jquery ajax 加载结果列表,即使没有任何查询

jQuery select2 AJAX 不工作

带有进度条的 jQuery ajax 上传 - 没有 flash

405 方法不允许,PATCH 不工作。 Laravel、Ajax、Jquery、引导模式

jquery ajax 链接工作/不工作它随着时间的推移而工作