【问题标题】:Send json with POST使用 POST 发送 json
【发布时间】:2014-05-23 17:57:10
【问题描述】:

在 stackoverflow 中查找后,我看不到解决方案。 我有这个 jquery 代码:

<script>

$('input#submit').click( function() {
    $.ajax({
        url: 'http://localhost:8081/rpc/api',
        type: 'post',
        contentType: 'application/json',            
        dataType: 'json',
        data: JSON.stringify({"jsonrpc": 2.0, "method": "entidades","params": {"file": "entidades.json"}}),
        success: function(data) {
                   alert(data);
                 },
        error:function(e){
            console.log(e);
        }
    });
});

我正在尝试将数据参数中的 json 发送到带有瓶服务器的文件,该服务器处理 json 并返回一些东西。

问题是当我从 chrome 或其他浏览器执行此操作时,我在控制台中收到此信息:

    OPTIONS http://localhost:8081/rpc/api 405 (Method Not Allowed)
XMLHttpRequest cannot load http://localhost:8081/rpc/api. Origin http://localhost is not allowed by Access-Control-Allow-Origin. 

我认为问题在于我在本地执行 jquery。 如果这是问题所在,怎么做?

【问题讨论】:

标签: jquery json


【解决方案1】:

这看起来像是一个跨域请求,默认情况下大多数浏览器都不允许。即使只是不同的端口号也会使其成为跨域请求。 您可以将 CORS 视为可能的解决方案。

http://www.html5rocks.com/en/tutorials/cors/

另一种解决方案是做一个反向代理

【讨论】:

    【解决方案2】:

    Access-Control-Allow-Origin 表示不能执行跨域调用。 https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS

    解决此问题的唯一方法是在服务器中允许 CORS。 我认为还有另一种解决方法,使用 JSONP 而不是使用 $.ajax(),但我从未使用过它

    【讨论】:

    • JSONP 仅用于 GET 请求
    猜你喜欢
    • 2014-10-21
    • 2014-02-07
    • 1970-01-01
    • 1970-01-01
    • 2014-06-25
    • 2022-06-14
    • 1970-01-01
    • 1970-01-01
    • 2021-05-05
    相关资源
    最近更新 更多