我用来向localhost中的Flask服务器发出POST请求的代码:
func data_request() {
let url:NSURL = NSURL(string: "http://192.168.1.192:9880/api/register")!
Alamofire.request(.POST, url, parameters: ["login":"login", "password" : "12345"]).responseJSON { response in
switch response.result {
case .Success:
NSLog("Validation Successful")
case .Failure(let error):
NSLog("\(error), \(String(data: response.data!, encoding: NSUTF8StringEncoding))")
return
}
if (response.result.value as? [String: AnyObject]) != nil{
print(response.result.value)
}
}
}
但它发送GET请求!服务器和本地代理都告诉它是GET请求 - 这是Burp截获的:
GET /api/register/ HTTP/1.1
Host: 192.168.1.192:9880
Accept: */*
User-Agent: Project Manager/Roman-Nikitin.Project-Manager (1; OS X 10.11.3)
Accept-Language: en;q=1.0, fr;q=0.9, de;q=0.8, zh-Hans;q=0.7, zh-Hant;q=0.6, ja;q=0.5
Accept-Encoding: gzip;q=1.0, compress;q=0.5
Connection: close
答案 0 :(得分:5)
我遇到了同样的问题,您只需将/
放在网址末尾即可。我想问题是在Alamofire。对于从www.domain.com/something
到www.domain.com/something/
答案 1 :(得分:1)
对于任何人来到这里因为他们有同样的问题(像我一样):在我的情况下,我最后已经有一个/
,我不得不删除它。
基于this answer,它似乎是服务器将原始POST请求重定向到GET请求。因此要么弄清楚你的服务器需要什么(尾随斜线或否),要么像链接的答案那样设置服务器。