Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带301重定向的Javascript GET请求_Javascript_Angularjs_Get_Http Status Code 301_Gorilla - Fatal编程技术网

带301重定向的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

在弄不清楚到底出了什么问题之后,我想我应该在这里试试运气,看看是否有人知道发生了什么

我有一个带有GoLang/Gorilla mux服务器后端的angularJS应用程序。 web应用已打开,并且服务器

基本上,我有一个简单的Javascript GET请求:

$.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"})