【问题标题】:Paraimpu HTTP POST REQUESTParaimpu HTTP POST 请求
【发布时间】:2012-10-08 12:17:12
【问题描述】:

我正在尝试从我的 Jquery 移动应用程序(托管在 Amazon S3 上)向“http://paraimpu.crs4.it/data/new”发出一个 http POST 请求,以将数据插入到我在 Paraimpu 站点上的传感器中。这是我提出的要求:

        data = "Test";
        valueToSend = '{"token":"c9d1cee6-da40-4e97-afc8-209045786b04","content-type":"application/json","data":' + data + '}';
        $.ajax({
            url: "http://paraimpu.crs4.it/data/new",
            type: "POST",
            data: valueToSend,
            dataType: "json",
            crossDomain: true,
            contentType:"application/json",
            success: function(){
            alert('Success');
        }
        });

我一直在努力

XMLHttpRequest 无法加载 http://paraimpu.crs4.it/data/new。起源 “http://webappz.s3-website-us-east-1.amazonaws.com”不允许 访问控制允许来源。

我知道这是因为跨域政策,但我该如何解决这个问题? paraimpu 页面上的说明非常模糊,只是说:

通过 HTTP POST 将新的传感器数据推送到:

http://paraimpu.crs4.it/data/new

内容如下:{"token":"c9d1cee6-da40-4e97-afc8-209045786b04", "content-type":"text/plain", "data":RAW DATA}

【问题讨论】:

    标签: javascript jquery ajax cors


    【解决方案1】:
    data = "Test";
    valueToSend = '{"token":"c9d1cee6-da40-4e97-afc8-209045786b04","content-type":"application/json","data":' + data + '}';
        $.ajax({
            url: "http://paraimpu.crs4.it/data/new",
            type: "POST",
            data: valueToSend,
            dataType: "jsonp",    //set datatype to jsonp
            crossDomain: true,
            jsonp: false,
            contentType:"application/json",
            success: function(){
                alert('Success');
            }
        });​
    

    这些是您缺少的部分:

    dataType: "jsonp":您期望从服务器返回的数据类型。 “jsonp”,使用 JSONP 加载到 JSON 块中。添加一个额外的“?callback =?”到 URL 的末尾以指定回调。通过将查询字符串参数“_=[TIMESTAMP]”附加到 URL 来禁用缓存,除非缓存选项设置为 true。

    jsonp: false:覆盖 jsonp 请求中的回调函数名称。在“callback=?”中将使用该值代替“callback” url 中查询字符串的一部分。所以 {jsonp:'onJSONPLoad'} 会导致 'onJSONPLoad=?'传递给服务器。从 jQuery 1.5 开始,将 jsonp 选项设置为 false 可防止 jQuery 将“?callback”字符串添加到 URL 或尝试使用“=?”为转型。在这种情况下,您还应该明确设置 jsonpCallback 设置。例如 { jsonp: false, jsonpCallback: "callbackName" }

    在此处了解更多信息:jQuery.ajax()

    【讨论】:

    • 谢谢,但这似乎不起作用。使用 JSONP 会自动将请求转换为 GET,我得到“400 Bad Request”作为响应
    猜你喜欢
    • 2012-07-10
    • 2015-05-13
    • 2015-06-01
    • 2017-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-11
    • 2017-10-03
    相关资源
    最近更新 更多