我有一个发帖的服务。该服务正在另一台机器上托管。当我试图使用Postman发布时,它工作正常。现在,当我尝试使用在另一台机器上运行的Angular2应用程序发布时,我收到错误“响应状态:URL为0:null”。我的角度服务中的代码如下:
postQuestions() {
var json = JSON.stringify({
"TestInfo_FK" : "612",
"Resource_FK" : 0,
"QuestionNo" : 22,
"ContentType" : "HTML",
"Content" : "This is the question from Jason",
"NoOptions" : 4,
"OptionLayout" : "Vertical",
"Answer" : "A"
});
var url = 'http://my.service.net/api/ONLINE/Question';
var params = 'json=' + json;
var headers = new Headers();
headers.append('Content-Type', 'application/json');
headers.append('Access-Control-Allow-Origin', '*');
return this._http.post(url, params, {
headers: headers
})
.map(res => res.json());
}
如何解决这个问题?
答案 0 :(得分:0)
当您的托管服务无法通过跨源(CORS)访问时会出现这种情况。因此,如果您正在访问Spring Rest服务,则在服务上使用@CrossOrigin注释。 或使用 flask-restful用于构建远程API
来自flask_restful.utils import cors 来自flask_restful import Api
api = Api(app,decorators = [cors.crossdomain(origin ='*')])
答案 1 :(得分:0)
我发现了导致问题的原因..它是服务器方面的问题。您需要先设置CORS中间件,然后再设置剩余的API中间件。
请注意我正在使用Laravel 5.6 + Angular 5
'api' => [
'throttle:60,1',
'bindings',
\Barryvdh\Cors\HandleCors::class,
],
'api' => [
\Barryvdh\Cors\HandleCors::class,
'throttle:60,1',
'bindings'
],