【问题标题】:Angular 2 HTTP POST does an OPTIONS callAngular 2 HTTP POST 执行 OPTIONS 调用
【发布时间】:2017-01-02 19:59:10
【问题描述】:

我的 Angular 2 应用程序遇到了一个非常奇怪的问题。我实际上想对我的 Play Scala API 进行包含 JSON 的 POST 调用,但它一直想尝试进行 OPTIONS 调用。

这是我的代码:

登录服务

constructor (private _apiEndpoint: ApiEndpoint) {}

postLogin(login: string, credential: string): Observable<AuthToken> {
    let headers = new Headers({ "Content-Type": "application/json" })
    let jsonLogin = {"login": login, "password": credential}

    return this._apiEndpoint.postLogin(JSON.stringify(jsonLogin), headers)
                    .map(this._apiEndpoint.extractData)
}

ApiEndpoint

constructor (private _http: Http) {}

postLogin(body: string, options: any) {
    return this._http.post("http://localhost:9000/login", body, {
        headers: options
    })
}

然后当我尝试拨打电话时(我尝试通过 console.log 检查 JSON 并且它是正确的),并且无论出于何种原因,该电话都会尝试拨打 OPTIONS 电话:

有人知道吗?谢谢!

【问题讨论】:

    标签: angular


    【解决方案1】:

    您正在发出跨域请求。

    请求发给localhost:9000,来自localhost:9002。

    浏览器使用 OPTIONS 动词创建一个飞行前请求,以便知道他是否可以继续并发出“真正的”请求。

    阅读有关 CORS 的更多信息here。

    【讨论】:

    • 原来如此!谢谢 !更糟糕的是我在控制器中有选项功能,我只是忘记放置链接它的路由......
    • 有同样的问题,你们中的哪一个可以发布一个答案,告诉更多的解决方案是什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-28
    • 2016-07-09
    • 2017-12-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多