Angular,内容类型不与$ http第2部分一起发送

时间:2016-01-20 18:14:10

标签: angularjs json post content-type hal-json

关于previous question,我仍然面临一个问题,即Content-Type似乎没有被发送到预检请求,在服务器上启用了OPTIONS,并且数据被填充为json对象。我一直在HAL JSON语法和常规JSON之间蹦蹦跳跳,结果相同。

常规json:

return $http({
    url: 'http://ait.local/entity/node?_format=json',
    method: 'POST',
    headers: {
        'Content-Type': 'application/json'
    },
    data: task
});

Hal json:

return $http({
    url: 'http://ait.local/entity/node?_format=hal_json',
    method: 'POST',
    headers: {
        'Content-Type': 'application/hal+json'
    },
    data: task
});

检查Chrome和FF中的标头不会在请求标头中显示Content-Type。以下是回复:

  

XMLHttpRequest无法加载http://ait.local/entity/node?_format=json。   对预检请求的响应未通过访问控制检查:否   请求中存在“Access-Control-Allow-Origin”标头   资源。因此不允许来源“http://localhost:8080”   访问。

我已经确保在服务器上启用了CORS,在.htaccess中:

<IfModule mod_headers.c>
  # Disable content sniffing, since it's an attack vector.
  Header always set X-Content-Type-Options nosniff

  Header set Access-Control-Allow-Origin "http://localhost:8080"
  Header set Access-Control-Allow-Methods "POST, GET, OPTIONS, PATCH, DELETE"
  Header set Access-Control-Allow-Headers "Origin, Authorization, Accept, Content-Type, X-Requested-With"

  RewriteCond %{REQUEST_METHOD} OPTIONS
  RewriteRule .* / [R=200,L]
</IfModule>

此外,如果我在Postman中测试它,则HAL JSON具有201 Created响应并创建实体。这让我相信问题出现在Angular的某个地方。但是,即使使用jQuery执行相同的请求也会导致完全相同的错误。如果我控制台记录任务数据,它确实是一个JSON对象。

有没有人有这方面的经验?

0 个答案:

没有答案