请求的资源不支持http方法' get'。跨域

时间:2015-08-30 20:18:21

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

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

struct MyStruct {
  var someMember: String
}

protocol MyProtocol {
  var myVar: MyStruct { get set }
}

class MyType: MyProtocol {
  var myVar: MyStruct {
    get {
      return MyStruct(someMember: "some string")
    }
    set {
      println(newValue)
    }
  }
}


class UsingClass {
  var anInstanceOfMyType: MyProtocol?
  var anOtherInstanceOfMyType: MyType?

  func someMethod() {

    anInstanceOfMyType = MyType()
    anInstanceOfMyType?.myVar = MyStruct(someMember: "blah")
    if let anInstanceOfMyType = anInstanceOfMyType {
       // The following line produces this error :Cannot assign to 'myVar' in 'anInstanceOfMyType'
      anInstanceOfMyType.myVar = MyStruct(someMember: "blah blah")
    }

    anOtherInstanceOfMyType = MyType()
    anOtherInstanceOfMyType?.myVar = MyStruct(someMember: "blah")
    if let anOtherInstanceOfMyType = anOtherInstanceOfMyType {
      anOtherInstanceOfMyType.myVar = MyStruct(someMember: "blah blah")
    }
  }
}

这没有帮助。使用jsonp后(请参阅我的以下jc代码),此问题已解决。但现在我得到"请求的资源不支持HTTP方法' GET'" - Errormsg。

<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>

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

1 个答案:

答案 0 :(得分:0)

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

哦,我哦,我的天啊......