当前位置: 首页 > 知识库问答 >
问题:

未添加AngularJS内容类型标题

文喜
2023-03-14

以下代码使用CORS协议完美地发送请求并接收响应。我想将内容类型标头更改为“应用程序/json”而不是“应用程序/x-www-form-urlencoded”。但是,当我将内容类型替换为“应用程序/json”时,请求失败。当我在浏览器中检查请求时,我可以看到内容类型标头已被删除而不是更改。

var servicesApp = angular.module('services', [])

    .config(function($httpProvider){

        /* Enable CORS */
        $httpProvider.defaults.useXDomain = true;
        delete $httpProvider.defaults.headers.common['X-Requested-With'];
})


.factory('model', function($http) {

        var testJSON = '{"employees": [ {"firstName":"John", "lastName":"Doe"} ] }';

        $http({
            url: 'http://127.0.0.1:8081/controller/UIController',
            method: "POST",
            params: {"path" : "save"},
            data: "message= " + testJSON,
            headers: {'Content-Type': 'application/x-www-form-urlencoded'}

        }).success(function (data, status, headers, config) {
            alert(data.ExampleForm[1]);

        }).error(function (data, status, headers, config) {
            alert(status);
        });

来自以上代码的请求

Request URL:http://127.0.0.1:8081/controller/UIController?path=save

Request Method:POST

Status Code:200 OK

Request Headersview source

Accept:application/json, text/plain, */*

Accept-Encoding:gzip,deflate,sdch

Accept-Language:en-GB,en-US;q=0.8,en;q=0.6

Connection:keep-alive

Content-Length:67

Content-Type:application/x-www-form-urlencoded

Host:127.0.0.1:8081

Origin:http://127.0.0.1:8020

Referer:http://127.0.0.1:8020/TwineClient/src/index.html

User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.107 Safari/537.36

Query String Parametersview sourceview URL encoded

path:save

Form Dataview sourceview URL encoded

message: {"employees": [ {"firstName":"John", "lastName":"Doe"} ] }

Response Headersview source

Access-Control-Allow-Headers:Content-Type

Access-Control-Allow-Methods:POST

Access-Control-Allow-Origin:*

Content-Length:51

Content-Type:application/json;charset=ISO-8859-1

Date:Tue, 11 Feb 2014 16:15:00 GMT

Server:Apache-Coyote/1.1

当“应用程序/x-web-form-urlencoded”被替换为“应用程序/json”时:

Request URL:http://127.0.0.1:8081/controller/UIController?path=save

Request Method:OPTIONS

Status Code:200 OK

Request Headersview source

Accept:*/*

Accept-Encoding:gzip,deflate,sdch

Accept-Language:en-GB,en-US;q=0.8,en;q=0.6

Access-Control-Request-Headers:accept, content-type

Access-Control-Request-Method:POST

Connection:keep-alive

Host:127.0.0.1:8081

Origin:http://127.0.0.1:8020

Referer:http://127.0.0.1:8020/TwineClient/src/index.html

User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.107 Safari/537.36

Query String Parametersview sourceview URL encoded

path:save

Response Headersview source

Allow:GET, HEAD, POST, TRACE, OPTIONS

Content-Length:0

Date:Tue, 11 Feb 2014 16:11:02 GMT

Server:Apache-Coyote/1.1

共有1个答案

阚砚文
2023-03-14

当您将内容类型更改为application/json时,浏览器将发送飞行前(选项)请求。根据CORS规范,这是一个必需的步骤。如果您想使用application/json作为请求内容类型,您的服务器需要正确地确认此预飞行。您可以在此处阅读有关CORS的更多信息:https://developer.mozilla.org/en-US/docs/HTTP/Access_control_CORS.

这是一个常见问题解答,我在这里回答了一个类似的问题:WebAPI 2-CORS不使用contentType application/json。

 类似资料:
  • 我有一个Java服务器和一个JavaScript客户端,成功地使用服务器发送事件来发送更新。最近,我们被迫在使用内置在kubernetes中的NGINX作为服务器和客户端之间的代理与使用基于Kong的代理之间进行切换,该代理以不同的配置扩展NGINX。新的代理缓冲上交所通过它打破了协议,因为其他应用程序正在使用新的代理,我不允许关闭所有缓冲,这是以前的代理如何绕过这个问题。作为一种选择,我一直试图

  • 我使用GraphQL. Client Nuget包调用需要Content-Type头的Graphql API。以下是我正在做的 设置GraphQL选项。注:我已经设置了选项。媒体类型 初始化客户端和授权标头 GraphQL查询 调用API并检索响应结果 但是,我收到错误的请求,错误为“{”errors:[{”message:“必须提供查询字符串。”}]}” 我做错了什么?如何正确设置内容类型标题。

  • 远程地址:54.83.54.37:443 URL:../v2/places/53b43e03e4b00cb25bcb16af/locations/remove 请求方法:删除 状态代码:500内部服务器错误请求 接受:应用程序/JSON,text/plain, 接受-编码:gzip、deflate、sdch 接受-语言:en-us,en;q=0.8 授权:承载.....连接:Keep-Alive

  • 问题内容: 我本周刚开始使用AngularJS进行一个新项目,所以我必须尽快加快速度。 我的要求之一是动态添加html内容,并且该内容可能带有click事件。 因此,我在下面的代码Angular代码中显示了一个按钮,当单击该按钮时,它会动态添加另一个按钮。单击动态添加的按钮,应该添加另一个按钮,但是我无法让ng- click来处理动态添加的按钮 工作代码示例在此处 http://plnkr.co/

  • 我在React应用程序中使用: 我想在最后一列标题中添加一些按钮(而不是列名): 其中列: 那要怎么做?有可能吗?我什么都找不到

  • 我已经尝试了Flurl的常规PutJsonAsync方法,但没有成功。这是我的代码中唯一的非flurl部分。 事先Thanx。