首先。请忍受我的问题。
我正在做的只是执行ajax请求,该请求将返回字符串的响应数据。
这是我的php
<?php
header('Access-Control-Allow-Origin: *');
echo 'Peenoise Crazy';
?>
Http请求
let headers = new Headers({ 'Content-Type': 'application/x-www-form-urlencoded' });
let options = new RequestOptions({ headers: headers });
return this.http.post('./app/parsers/peenoise.php', '', options)
.then(val => console.log(val))
这不起作用。但是,如果我将网址更改为此http://localhost:8912/app/parsers/peenoise.php
。它有效。
问题
./app/parsers/peenoise.php
不起作用?http://localhost:8912/app/parsers/peenoise.php
。为什么我需要放header('Access-Control-Allow-Origin: *')
?它位于我的应用程序的同一文件夹中。http://localhost:8912/route/to/phpfolder.php
的网址?任何帮助将不胜感激。请指导我这个。感谢
答案 0 :(得分:0)
发布需要完整或相对的网址才能生效。您可以使用:
this.http.post('/parsers/peenoise.php', '', options)
答案 1 :(得分:0)
实际上,Angular会查找后端服务器来发布数据,因此想法在您的帖子请求中如下所示
this.http.post('./app/parsers/peenoise.php', '', options).then(val => console.log(val))
它会尝试在该位置发布帖子请求 想象你在localhost上提供角度:4200
http://localhost:4200/app/parsers/peenoise.php
现在回答你的问题:
1)./app/parsers/peenoise.php
无法正常工作,因为它实际上是在尝试从后端服务中找到它
2)每当您向其他服务器发出http请求时,您需要header('Access-Control-Allow-Origin: *')
,而不是您网站当前正在使用的服务器,如果您不使用该服务器,则需要{i}}最终得到Connection_refused_Error
。
3)如果你想只使用角度,那么有mockAckends,in-memory-web-api
使用mockBackEnd的示例是 here