【问题标题】:the requested resource does not support http method 'get'. Cross Domain请求的资源不支持 http 方法“get”。跨域
【发布时间】:2015-08-30 20:18:20
【问题描述】:

我一直在寻找解决我的问题的方法。我正在为我的问题找到很多答案,但无法弄清楚。 这是我的问题: 我正在尝试将 json 文件发送到另一个域(它是一家外部公司,为合作公司提供 Web API),它应该给我发回一些 json(我正在使用 MVC WebApps),而不使用控制器...... 首先,我遇到了跨域问题,我试图通过编辑 Web.config 来解决这个问题(见上文)。

<system.webServer>
<httpProtocol>
  <customHeaders>
            <remove name="X-Powered-By" /> 
            <add name="Access-Control-Allow-Origin" value="*" />
            <add name="Access-Control-Allow-Headers" value="Content-Type" /> 
            <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" /> 
  </customHeaders>
</httpProtocol>

这没有帮助。使用jsonp后(见我下面的jc代码),这个问题就解决了。但现在我得到 “请求的资源不支持 HTTP 方法 'GET'” - Errormsg。

<script>
    $("#getprice").click(function () {
        $.support.cors = true;
        $.ajax({
            type: "POST",
            asnc: false,
            Accept: "application/json",
            contentType: "application/json",
            dataType: "jsonp",
            jsonpCallback: 'localJsonpCallback',
            url: "otherdomain.com" + "?callback=?",
            data: {
                models: [{
                    toolID: "",
                    modelReference: "some model.xml",
                    materialID: $("#materialID").val(),
                    finishID: $("#finishID").val(),
                    quantity: $("#quantity").val(),
                    xDimMm: $("#xDimMm").val(),
                    yDimMm: $("#yDimMm").val(),
                    zDimMm: $("#zDimMm").val(),
                    volumeCm3: $("#volumeCm3").val(),
                    surfaceCm2: $("#volumeCm3").val()
                }],
                shipmentInfo: [{
                    countryCode: $("#countryCode").val(),
                    stateCode: "",
                    city: $("#city").val(),
                    zipCode: $("#zipCode").val()
                }],
                currency: $("#currency").val()
            },
               xhrFields: {
                withCredentials: true
            },
            crossDomain: true
        })
    })
    function localJsonpCallback(json) {
        if (!json.error) {
            alert("läuft");
            console.log(json);
        } else {
            alert(json.Message);
        }
    }
</script>

在寻找解决方案时,我只为您的控制器找到此 [HTTPPOST] 信息。但我的问题在这里,我不使用控制器作为缓冲区。我直接将数据从我的视图发送到服务器并返回。

【问题讨论】:

  • 你能显示你发布到的Action方法吗?
  • 正如我所解释的,我没有响应控制器中的操作方法。这是我的问题吗?我想将信息直接发送回“解决方案”文本框中的 html 表单文件。所以在这种情况下,我的 localJsonpCallback 函数应该将信息发送到 html id 标签
  • 试试otherdomain.com 没有?callback=? 作为你的网址
  • 我试过有无

标签: javascript c# jquery json model-view-controller


【解决方案1】:

好的,明白了! 在没有直接找到解决方案后,我将Controller作为我的中间...将表单数据发送到具有JsonResult Action方法的Controller。在这个方法中,我通过 HttpWebRequest 与我的外部 Web Api 进行通信,并通过 Httpreponse 将 json 数据发送回我的视图。

我的天啊……

【讨论】:

    猜你喜欢
    • 2012-09-27
    • 2014-01-28
    • 2015-10-08
    • 2013-07-31
    • 2017-10-17
    • 2013-03-05
    • 1970-01-01
    • 1970-01-01
    • 2020-09-19
    相关资源
    最近更新 更多