首页 > JavaScript >  JavaScript 对预检请求的响应未通过访问控制检查

 JavaScript 对预检请求的响应未通过访问控制检查

上一篇 下一篇

我在使用 ngResource 调用亚马逊云科技上的 REST API 时收到此错误:

XMLHttpRequest 无法加载
http://server.apiurl.com:8000/s/login?login=facebook。对预检请求的
响应未通过访问控制检查:请求
的资源上不存在
“访问控制允许源”标头。因此,不允许访问源“http://localhost”。
错误 405

服务:

socialMarkt.factory('loginService', ['$resource', function ($resource) {
    var apiAddress = "http://server.apiurl.com:8000/s/login/";
    return $resource(apiAddress, {
        login: "facebook",
        access_token: "@access_token",
        facebook_id: "@facebook_id"
    }, {
        getUser: {
            method: 'POST'
        }
    });
}]);

控制器:

[...]
loginService.getUser(JSON.stringify(fbObj)),
    function (data) {
        console.log(data);
    },
    function (result) {
        console.error('Error', result.status);
    }
[...]

我正在使用浏览器。我还能做些什么来解决这个问题?

我什至将服务器配置为接受来自源头的标头。localhost

分割线

网友回答:

您遇到了 CORS 问题。

有几种方法可以修复或解决此问题。

  1. 关闭 CORS。例如:如何在 Chrome 中关闭 CORS
  2. 为您的浏览器使用插件
  3. 使用代理,例如 nginx。如何设置的示例
  4. 完成服务器的必要设置。这更像是您在 EC2 实例上加载的 Web 服务器的一个因素(假设这就是您所说的“亚马逊网络服务”)。对于您的特定服务器,您可以参考启用 CORS 网站。

更详细地说,您正在尝试从本地主机访问 api.serverurl.com。这是跨域请求的确切定义。

通过关闭它只是为了完成你的工作(好吧,但如果你访问其他网站并且只是踢罐子,你的安全性很差),或者你可以使用一个代理,让你的浏览器认为所有请求都来自本地主机,而实际上你有一个本地服务器,然后调用远程服务器。

因此,api.serverurl.com 可能会成为localhost:8000 / api,并且您的本地nginx或其他代理将发送到正确的目的地。


现在,应大众需求,100% 更多的 CORS 信息 — 同样美味!


绕过 CORS 正是为那些只是学习前端的人展示的内容。
带有承诺的 HTTP 示例

分割线

网友回答:

我的“API服务器”是一个PHP应用程序,因此为了解决此问题,我找到了以下解决方案:

将这些行放在文件索引中.php

header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST, PATCH, PUT, DELETE, OPTIONS');
header('Access-Control-Allow-Headers: Origin, Content-Type, X-Auth-Token');

分割线

网友回答:

在 ASP.NET Core Web API 中,此问题已通过添加“Microsoft.AspNetCore.Cors”(版本 1.1.1)并在 Startup.cs 中添加以下更改得到解决。

public void ConfigureServices(IServiceCollection services)
{
    services.AddCors(options =>
    {
        options.AddPolicy("AllowAllHeaders",
            builder =>
            {
                builder.AllowAnyOrigin()
                       .AllowAnyHeader()
                       .AllowAnyMethod();
            });
    });
    .
    .
    .
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    // Shows UseCors with named policy.
    app.UseCors("AllowAllHeaders");
    .
    .
    .
}

并放入控制器。[EnableCors("AllowAllHeaders")]

模板简介:该模板名称为【 JavaScript 对预检请求的响应未通过访问控制检查】,大小是暂无信息,文档格式为.编程语言,推荐使用Sublime/Dreamweaver/HBuilder打开,作品中的图片,文字等数据均可修改,图片请在作品中选中图片替换即可,文字修改直接点击文字修改即可,您也可以新增或修改作品中的内容,该模板来自用户分享,如有侵权行为请联系网站客服处理。欢迎来懒人模板【JavaScript】栏目查找您需要的精美模板。

相关搜索
  • 下载密码 lanrenmb
  • 下载次数 183次
  • 使用软件 Sublime/Dreamweaver/HBuilder
  • 文件格式 编程语言
  • 文件大小 暂无信息
  • 上传时间 04-16
  • 作者 网友投稿
  • 肖像权 人物画像及字体仅供参考
栏目分类 更多 >
热门推荐 更多 >
单页式简历模板 企业网站 微信文章 微信公众平台 自适应 响应式 微信图片 微信模板 html5 微信素材
您可能会喜欢的其他模板