Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/410.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
Javascript Angular2 http.get飞行前问题_Javascript_Php_Angularjs_Angular - Fatal编程技术网

Javascript Angular2 http.get飞行前问题

Javascript Angular2 http.get飞行前问题,javascript,php,angularjs,angular,Javascript,Php,Angularjs,Angular,我目前正在使用angular2的HTTP从我的自定义api发布和获取数据 API是用PHP编写的,端点等已经过测试,工作正常 我遇到的问题是,无论何时设置GET Authorization标头,我都会在Chrome控制台中收到以下错误消息: Response for preflight has invalid HTTP status code 404 我已设置API的标头,以允许从远程来源进行访问,具体如下: header("Access-Control-Allow-Origin: http:

我目前正在使用angular2的HTTP从我的自定义api发布和获取数据

API是用PHP编写的,端点等已经过测试,工作正常

我遇到的问题是,无论何时设置GET Authorization标头,我都会在Chrome控制台中收到以下错误消息:

Response for preflight has invalid HTTP status code 404
我已设置API的标头,以允许从远程来源进行访问,具体如下:

header("Access-Control-Allow-Origin: http://localhost:3000");
header("Access-Control-Allow-Credentials: true");
header("Access-Control-Allow-Methods: GET, POST, PUT, PATCH ,DELETE");
header("Access-Control-Allow-Headers: Authorization, Content-Type");
是的,我正在本地主机上运行我的angular项目,我有一个POST请求,该请求在没有Authorization头集的情况下发生,它工作正常,我还从GET请求中删除了Authorization头,然后它工作正常(但该端点需要授权头将我的JWT发送到我的API)

我做错什么了吗?如果我需要设置其他标题,我已经在Postman中测试了端点,一切正常

编辑

我还编辑了我的主机文件,使其具有指向本地的tld点,以及一个用于API的tld点,该API是我本地计算机上的IP

所以我的来源是:website.com 我的API:API.website.com

我改变了主意
访问控制允许来源:

如果您控制了响应服务器,则处理此问题的最简单方法是为以下内容添加响应头:

Access-Control-Allow-Origin: *
这将允许跨域Ajax。在PHP中,您需要修改响应,如下所示:

<?php header('Access-Control-Allow-Origin: *'); ?>

您只需将标题集Access Control Allow Origin*设置放在Apache配置或htaccess文件中即可。它就像一个符咒

从注释中可以看出,这是一个重要的注意事项:通配符将允许任何域向您的主机发送请求。我建议将星号替换为运行脚本的特定域。当你活着的时候

请参阅我发现的问题

我的路由器只接受$\u POST和$\u GET方法

Chrome在发送POST或GET以确认来源之前发送选项方法

现在我刚刚补充说:

if($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
    header("Access-Control-Allow-Origin: *");
    header("Access-Control-Allow-Methods:GET,POST,PUT,DELETE,OPTIONS");
    header("Access-Control-Allow-Headers: Authorization, Content-Type,Accept, Origin");exit;
}

因此,现在当一个选项请求通过时,它只返回允许我的POST和GET请求所需的头文件

尝试替换为系统的IP地址,如ex.192.168.37.25:3000。这可能是因为当您使用localhost时,API指向其本地系统。所以,如果您从不同的PC访问,这可能会导致问题。这不起作用。。。无论是在NGINX配置中,还是使用此头php函数。同上