Javascript Angular2 http.get飞行前问题
我目前正在使用angular2的HTTP从我的自定义api发布和获取数据 API是用PHP编写的,端点等已经过测试,工作正常 我遇到的问题是,无论何时设置GET Authorization标头,我都会在Chrome控制台中收到以下错误消息: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:
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函数。同上