javascript – Laravel AngularJS CORS无效

编程之家收集整理的这篇文章主要介绍了javascript – Laravel AngularJS CORS无效编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我正在创建一个AngularJS项目,现在位于http:// localhost,在http://api.localhost上有一个laravel后端,两者都由Nginx服务器提供服务.

在进行$http.post请求时,angular首先进行CORS OPTIONS调用,并且我已经配置了我的Nginx服务器以使用正确的标头进行响应:

    location / {
            add_header "Access-Control-Allow-Origin" "*";
            add_header "Access-Control-Allow-Credentials" "true";
            add_header "Access-Control-Allow-Methods" "GET,POST,DELETE,PUT,OPTIONS";
            add_header "Access-Control-Allow-Headers" "Keep-Alive,User-Agent,If-Modified-Since,Cache-Control,Content-Type,Authorization";
            add_header "Access-Control-Max-Age" "1728000";

            if ($request_method = 'OPTIONS') {
                    return 204;
            }


            #try_files $uri $uri/ /index.html;
            try_files $uri /index.PHP?$query_string;
    }

    location = /index.PHP {

            add_header "Access-Control-Allow-Origin" "*";
            add_header "Access-Control-Allow-Credentials" "true";
            add_header "Access-Control-Allow-Methods" "GET,Authorization";
            add_header "Access-Control-Max-Age" "1728000";

            if ($request_method = 'OPTIONS') {
                    return 204;
            }

           ...
    }

我的角度模块也配置有:

.config(['$httpProvider',function($httpProvider) {
    $httpProvider.defaults.useXDomain = true;
    delete $httpProvider.defaults.headers.common['X-Requested-With'];
}])

OPTIONS调用按预期返回:

Access-Control-Allow-Credentials:true
Access-Control-Allow-Headers:Keep-Alive,Authorization
Access-Control-Allow-Methods:GET,OPTIONS
Access-Control-Allow-Origin:*
Access-Control-Max-Age:1728000
Connection:keep-alive
Date:Mon,04 Nov 2013 02:14:16 GMT
Server:Nginx/1.2.6 (Ubuntu)

但随后的POST调用失败,状态为CANCELED,angular会向JS控制台抛出错误

`XMLHttpRequest cannot load http://api.localhost/users/accesstokens. Origin http://localhost is not allowed by Access-Control-Allow-Origin.`

我昨晚熬夜并且工作得很好,但是当我今天再次尝试时,它又回到了原点.最糟糕的问题!

做什么?

编辑:我发现了问题,但我仍然不明白.我查看了我的Nginx访问日志,并看到POST请求实际上已经命中服务器,即使状态为CANCELED.我也看到响应是401.在我的请求正确后,响应是201.仍然是相同的取消状态.但当我将状态调整为200时,瞧!该请求按预期工作.

AngularJS是否只接受跨源请求中的200状态?

最佳答案
Angular.js $http服务认为有效的200到299之间的任何状态,你可以在$http源代码中看到它; herehere我无法在其他任何地方找到200硬编码的状态.

尽管有Chrome控制台消息,但问题可能出在Alistair Robinson points in this post
检查你的Nginx是否更新到最新的稳定版本,然后检查它是否正确发送’Content-Length’标题,如果不是,我将使用Alistair解决方案手动填充Content-Length标题.

总结

以上是编程之家为你收集整理的javascript – Laravel AngularJS CORS无效全部内容,希望文章能够帮你解决javascript – Laravel AngularJS CORS无效所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您喜欢寻找一群志同道合、互帮互助的学习伙伴,可以点击下方链接加入:
编程之家官方1群
编程之家官方2群
编程之家官方3群
编程之家官方4群

相关文章

猜你在找的Nginx相关文章

Git Hooks Git 能在特定的重要动作发生时触发自定义的脚本。 这些脚本都被存储在 Git 目录下的 hooks 子目录中( )。当 git init 初始化一个仓库时,Git 默认会在这个目
macOS Sierra 11.12 已经帮我们预装了 Ruby、PHP(5.6)、Perl、Python 等常用的脚本语言,以及 Apache HTTP 服务器。由于 nginx 既能作为 HTTP
启动uwsgi出现no internal routing support, rebuild with pcre support使用如下命令,记录下,方便后人需要注意的是pip install uwsg
报这个错,我们可以去查看错误日志,进入如下目录 错误信息如下: 解决办法,在/data/下创建 wwwlogs目录,重启nginx即可 systemctl restart nginx 成功启动!!!
Nginx的安装 安装Nginx之前,需要先获取Nginx的安装文件。我们可以在http://nginx.org/en/download.html获取各个版本的Nginx安装文件。大家可以按照自己的需
常见的Web服务器产品 目前市场上比较流行的Web服务器主要有Apache、Microsoft IIS、Sun、Nginx、Tomcat、Lighttpd等。 由上图可以看出Nginx的市场占有率越来
什么是HTTP压缩 有时候客户端和服务器之间会传输比较大的报文数据,这时候就占用较大的网络带宽和时长。为了节省带宽,加速报文的响应速速,可以将传输的报文数据先进行压缩,然后再进行传输。 HTTP支持多
author:咔咔wechat:fangkangfk首先通过find / -name "*nginx*"看所有的nginx目录和文件然后通过rf -rm /nginx删除即可在通过他来找就已经删除掉了...
微信公众号搜索 “ 程序精选 ” ,选择关注!
微信公众号搜 "程序精选"关注