jquery - allow-control-allow-origin : * present in response, 但它仍然显示错误

标签 jquery angularjs http http-headers cors

allow-control-allow-origin : * header 存在于 API 响应中,但浏览器仍显示错误。网络 403 错误。

这是来自 API 的示例响应 header :

Access-Control-Allow-Headers: Origin,X-Requested-With,X-CSRF-Token,Content-Type
Access-Control-Allow-Methods: GET,POST,PUT,DELETE
Access-Control-Allow-Origin: *
Cache-Control: no-cache="set-cookie"
Connection: keep-alive
Content-Length: 870
Content-Type: text/plain;charset=UTF-8
Date: Sat, 28 Nov 2015 17:56:46 GMT
Server: Apache-Coyote/1.1
Set-Cookie: AWSELB=6B492DE10EE

Firebug 错误:

"NetworkError: 403 Forbidden - https://xyz.....s"

 Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://xyz..... (Reason: CORS header 'Access-Control-Allow-Origin' missing).

请求 - AngularJS

var config = {
                headers: {
                    "Accept": "application/json",
                    "Content-Type": "application/json",
                    "Apikey": "*************" 
                }
            }

            $http.post(URL, data, config)
            .success(function (data, status, headers, config) {
               //function
            })

最佳答案

确保您的服务器支持 OPTIONS 动词并在客户端使用它时返回正确的 CORS header - 这称为飞行前请求。查看客户端和服务器之间完整 CORS 交换的示例 here .

因此,第一步是客户端使用 OPTIONS HTTP 动词发送飞行前请求:

OPTIONS /canvas/73/source HTTP/1.1
Host: jsbin.com
Access-Control-Request-Method: GET
Origin: http://jsconsole.com
Access-Control-Request-Headers: x-requested-with

现在您的服务器应该使用正确的 CORS header 进行响应:

HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: X-Requested-With

就是这样,您已经建立了握手,现在可以随意获取/发布您想要的任何内容:

GET /canvas/73/source HTTP/1.1
Host: jsbin.com
x-requested-with: XMLHttpRequest

您将获得成功响应:

HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Content-Length: 977

...

你也可以看看this example .

关于jquery - allow-control-allow-origin : * present in response, 但它仍然显示错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33977063/

相关文章:

javascript - JQuery - 使用函数中的值

javascript - AngularJS:如何在链接函数中将元素移出范围

javascript - 使用 2 个属性过滤 JavaScript 中的数组

rest - 如果我使用 HTTP 方法 POST 来获取数据是否有效?

node.js - 禁用保持事件状态时 Node http 服务器 4 x FASTER?

http - 在创建改变服务器上数据的接口(interface)时,下列哪一项是正确的?

javascript - 传递给 javascript 函数 div 类参数

javascript - 网页的单指滚动 - 什么技术?工作示例?

javascript - 如何在 JQuery ui 中正确使用 AppendTo 和 Draggable() ?

node.js - 初学者 - 在 Windows 7 上使用 XAMPP 为 Angular 应用程序设置 localhost