Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/33.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 POST请求在凤凰城转向200个选项,但不发送以下帖子_Javascript_Angular_Cors_Elixir_Phoenix Framework - Fatal编程技术网

Javascript POST请求在凤凰城转向200个选项,但不发送以下帖子

Javascript POST请求在凤凰城转向200个选项,但不发送以下帖子,javascript,angular,cors,elixir,phoenix-framework,Javascript,Angular,Cors,Elixir,Phoenix Framework,我正在使用Angular 2和Phoenix,我正在尝试向Phoenix发送POST请求。我有以下代码: endpoint.ex 在我的前端我有 @Injectable() export class RegisterService { public headers: Headers; constructor(private _http: Http) { this.headers = new Headers(); this.headers.app

我正在使用Angular 2和Phoenix,我正在尝试向Phoenix发送POST请求。我有以下代码:

endpoint.ex 在我的前端我有

@Injectable()
export class RegisterService {

    public headers: Headers;

    constructor(private _http: Http) {
        this.headers = new Headers();
        this.headers.append('Content-Type', 'application/json');
    }

    createUser(): Observable<Response> {
        return this._http.post(
            'http://localhost:4000/v1/users', 
            JSON.stringify({
                firstName: 'lll',
                lastName: 'xxxxx',
                email: 'dddd@gmail.com',
                password: 'test123'
            }), 
            {headers: this.headers}
        );
    }
}
我有200个OK选项,但它从不发送POST请求

全体的 响应头 请求头 我的凤凰社日志上写着

[info] OPTIONS /v1/users
[info] Sent 200 in 31µs
不知道我做错了什么。我确实稍微修改了我的router.ex。。。虽然不确定这是否会有什么不同,但它在这里

defmodule Api.Router do
  use Api.Web, :router

  pipeline :api do
    plug :accepts, ["json"]
  end

  scope "/", Api do
    pipe_through :api

    resources "/organizations", OrganizationController
  end

  scope "/v1", Api.V1, as: :v1 do
    pipe_through :api

    resources "/users", UserController, only: [:create, :show, :update]
  end
end
您需要配置http://localhost:4000/v1/users 发送响应的路由,该响应包括Access Control Allow Origin响应标头,还包括Access Control Allow Headers响应标头,该标头的值中包含字符串内容类型,访问控制Allow Methods响应头的值中包含字符串POST

详细解释

解释浏览器发送该选项请求的原因,以及浏览器对此需要什么响应

我有200个OK选项,但它从不发送POST请求

这是因为如果选项响应不包括具有上述值的Access Control Allow Origin标头、Access Control Allow标头和Access Control Allow Methods标头,然后浏览器就停在那里,永远不会发送帖子。

您需要配置http://localhost:4000/v1/users 发送响应的路由,该响应包括Access Control Allow Origin响应标头,还包括Access Control Allow Headers响应标头,该标头的值中包含字符串内容类型,访问控制Allow Methods响应头的值中包含字符串POST

详细解释

解释浏览器发送该选项请求的原因,以及浏览器对此需要什么响应

我有200个OK选项,但它从不发送POST请求

这是因为,如果选项响应不包括具有如上所述值的Access Control Allow Origin标头、Access Control Allow标头和Access Control Allow Methods标头,则浏览器将立即停止并从不发送帖子。

原始值与原始标头完全匹配。您的请求正在发送原始值http://localhost:4200 而你只允许http://localhost. 您需要将原点更改为http://localhost:4200 如果要允许来自的请求http://localhost:4200:

原点值与原点标头完全匹配。您的请求正在发送原始值http://localhost:4200 而你只允许http://localhost. 您需要将原点更改为http://localhost:4200 如果要允许来自的请求http://localhost:4200:


您正在订阅createUser方法。用组件代码更新帖子。@Aravind更新了,是的,我正在打电话订阅。plug Corsica在plug MyApp.Router上面吗?你能试着暂时把原点改成*看看能不能解决这个问题?@Dogbert是的,插头科西嘉在插头上方,我把它改成*了,它似乎起作用了。。。现在正在发送POST请求!!!!不过,在这一点上,为什么当我使用chrome开发工具时,我会同时看到选项和POST请求?我以前从未见过。你能试试起源吗:http://localhost:4200 还有一次吗?它有效吗?您是否订阅createUser方法。用组件代码更新帖子。@Aravind更新了,是的,我正在打电话订阅。plug Corsica在plug MyApp.Router上面吗?你能试着暂时把原点改成*看看能不能解决这个问题?@Dogbert是的,插头科西嘉在插头上方,我把它改成*了,它似乎起作用了。。。现在正在发送POST请求!!!!不过,在这一点上,为什么当我使用chrome开发工具时,我会同时看到选项和POST请求?我以前从未见过。你能试试起源吗:http://localhost:4200 还有一次吗?它有效吗?你知道为什么它还在发送200个选项的回复吗?但不是邮报?如果200个选项失败,我会觉得更合理。@LukeXu@sideshowbarker在他们的答案末尾解释得比我好得多你知道为什么它还在发送200个选项的回复吗?但不是邮报?如果200个选项失败,我会觉得更合理。@LukeXu@sideshowbarker在他们的答案末尾解释得比我好得多
Request URL:http://localhost:4000/v1/users
Request Method:OPTIONS
Status Code:200 OK
Remote Address:127.0.0.1:4000
Referrer Policy:no-referrer-when-downgrade
cache-control:max-age=0, private, must-revalidate
content-length:0
date:Sat, 10 Jun 2017 04:29:50 GMT
server:Cowboy
x-request-id:hfm969svbqv9oa2jatn5ri641srsht3s
Accept:*/*
Accept-Encoding:gzip, deflate, sdch, br
Accept-Language:en-US,en;q=0.8
Access-Control-Request-Headers:content-type
Access-Control-Request-Method:POST
Connection:keep-alive
Host:localhost:4000
Origin:http://localhost:4200
Referer:http://localhost:4200/signup
[info] OPTIONS /v1/users
[info] Sent 200 in 31µs
defmodule Api.Router do
  use Api.Web, :router

  pipeline :api do
    plug :accepts, ["json"]
  end

  scope "/", Api do
    pipe_through :api

    resources "/organizations", OrganizationController
  end

  scope "/v1", Api.V1, as: :v1 do
    pipe_through :api

    resources "/users", UserController, only: [:create, :show, :update]
  end
end
plug Corsica, origins: "http://localhost:4200", allow_headers: ["content-type"]