带301重定向的Javascript GET请求
在弄不清楚到底出了什么问题之后,我想我应该在这里试试运气,看看是否有人知道发生了什么 我有一个带有GoLang/Gorilla mux服务器后端的angularJS应用程序。 web应用已打开,并且服务器 基本上,我有一个简单的Javascript GET请求:带301重定向的Javascript GET请求,javascript,angularjs,get,http-status-code-301,gorilla,Javascript,Angularjs,Get,Http Status Code 301,Gorilla,在弄不清楚到底出了什么问题之后,我想我应该在这里试试运气,看看是否有人知道发生了什么 我有一个带有GoLang/Gorilla mux服务器后端的angularJS应用程序。 web应用已打开,并且服务器 基本上,我有一个简单的Javascript GET请求: $.get('http://localhost:8080/api/v1'+'/locations/', {borough: "Queens"}) 使用inspect元素,我可以在响应头中看到以下内容: Content-Length:6
$.get('http://localhost:8080/api/v1'+'/locations/', {borough: "Queens"})
使用inspect元素,我可以在响应头中看到以下内容:
Content-Length:68
Content-Type:text/html; charset=utf-8
Date:Sun, 17 Apr 2016 20:12:00 GMT
Location:/api/v1/locations?borough=queens
并在控制台中执行以下操作:
XMLHttpRequest cannot load http://localhost:8080/api/v1/locations/? borough=queens. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8888' is therefore not allowed access.
我使用邮递员尝试了完全相同的请求,并看到一个401:
Access-Control-Allow-Origin →*
Content-Length →0
Content-Type →text/plain; charset=utf-8
Date →Sun, 17 Apr 2016 19:46:53 GMT
这正是我所期望的。出于某种原因,我的请求甚至没有发送到服务器,因为服务器不提供301请求。邮递员和应用程序给出完全不同的回答这一事实令人困惑
我和CORS有一些问题,但我想我已经解决了。事实上,Postman使用Access Control Allow Origin标头给了我一个不同的结果,这让我觉得这是另外一回事
我欢迎任何帮助
编辑:
我使用标准Cors参数让服务器回复。这是我现在从邮递员那里得到的:
Access-Control-Allow-Headers →Origin, X-Requested-With, Content-Type, Accept, Authorization
Access-Control-Allow-Methods →GET, POST, PUT, DELETE
Access-Control-Allow-Origin →*
Content-Length →0
Content-Type →text/plain; charset=utf-8
Date →Sun, 17 Apr 2016 20:27:31 GMT
仍然得到了JS调用的301
Edit2:(尝试将邮差呼叫设置为与网络请求完全相同)
仍然可以从inspect元素获得相同的301,并期望邮递员提供401。在Restful HTTP上下文中,我们有两个相同的HTTP调用,但却有完全不同的行为,这怎么可能呢 基本上,当我删除最后一个斜杠时: 从 到
这成功了!!!我不知道为什么。如果我想听到任何人可能知道这里发生了什么,为什么会这样。我要重申-由于最后一个斜杠,请求甚至没有发送到服务器 也许你应该用https来称呼它@莫罗斯不知道为什么需要这样做。无论如何,我试过了,得到了net::ERR\u SSL\u PROTOCOL\u error您正在发出一个跨域请求,需要在服务器上启用CORS。请对该错误进行web搜索。它每天在这里出现无数次。邮递员不受CORS限制或相同来源政策的约束@charlietfl我刚刚在上面添加了一个更新。Cors将从选项请求开始。我已经用上面的参数处理过了。这是一个直接GET请求,它最终返回301,甚至似乎没有命中服务器(我启用了服务器日志记录)头,需要打开选项,但您不允许使用该方法
Accept:*/*
Accept-Encoding:gzip, deflate, sdch
Accept-Language:en-US,en;q=0.8
Cache-Control:max-age=0
Connection:keep-alive
Host:localhost:8080
Origin:http://localhost:8888
Referer:http://localhost:8888/root/mainapp/
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36
$.get('http://localhost:8080/api/v1'+'/locations/', {borough: "Queens"})
$.get('http://localhost:8080/api/v1'+'/locations', {borough: "Queens"})