我通过fiddler发了一个http post请求:使用
http://localhost:58183/api/Account/Register
身体
{"email":"jbjunk4@outlook.com","password":"Abc1231*","confirmPassword":"Abc1231*"}
执行得很好,电子邮件在webapi 2上的身份数据库中注册。
但是,我在authorize.service.ts中有以下代码:
registerUser(localUser: LocalUser) {
var headers = new Headers();
headers.append('Content-Type', this.constants.jsonContentType);
var creds = JSON.stringify(localUser);
console.log(creds);
console.log(this.constants.accountUrl + "Register");
return this.http.post(this.constants.accountUrl + "Register", creds, { headers: headers })
.map(res => res.json());
}
creds =
{"email":"jbaird9@arsbirder.com","password":"Abc1231*","confirmPassword":"Abc1231*"}
url = http://localhost:58183/api/Account/Register
json-contentType = "application/json;charset=UTF-8";
控制台显示: SCRIPT7002:XMLHttpRequest:网络错误0x80070005,访问被拒绝。
家 HTML1300:导航发生。 家 模板解析警告: 该元素已弃用。改为使用(“-child ui-shadow”:!root}“class =”ui-menu-list“ (点击)= “listClick($事件)” > [警告 - >] HTTP://本地主机:58183 / API /帐号/注册 authorization.service.ts(47,9) SCRIPT7002:XMLHttpRequest:网络错误0x80070005,访问被拒绝。
家 错误SyntaxError:无效字符 core.es5.js(1020,1) “错误” { [功能]: , proto :{}, 描述:“无效的角色”, 消息:“无效的字符”, name:“SyntaxError”, 号码:-2146827274, stack:“SyntaxError:无效字符 在匿名函数(http://localhost:4200/main.bundle.js:788:13) 在SafeSubscriber.prototype .__ tryOrUnsub(http://localhost:4200/vendor.bundle.js:37370:13) 在SafeSubscriber.prototype.error(http://localhost:4200/vendor.bundle.js:37329:21) 在Subscriber.prototype._error(http://localhost:4200/vendor.bundle.js:37260:9) 在Subscriber.prototype.error(http://localhost:4200/vendor.bundle.js:37234:13) 在Subscriber.prototype._error(http://localhost:4200/vendor.bundle.js:37260:9) 在Subscriber.prototype.error(http://localhost:4200/vendor.bundle.js:37234:13) 在onError(http://localhost:4200/vendor.bundle.js:108672:17) 在ZoneDelegate.prototype.invokeTask(http://localhost:4200/polyfills.bundle.js:2836:13) at onInvokeTask(http://localhost:4200/vendor.bundle.js:90272:21)“ }
HTTP405:BAD METHOD - 不支持使用的HTTP谓词。 (XHR)选项 - http://localhost:58183/api/Account/Register
我无法弄清楚这一点。提前感谢您的帮助。
答案 0 :(得分:0)
如果您的应用中没有proxy.conf.json
文件,允许在其他端口上访问服务器,则通常会发生这种情况。 Angular有一个功能可以阻止流量进入不同的端口,除非您强制使用。如果您还没有proxy.conf.json
文件,则需要在app root
proxy.conf.json
{
"/api": {
"target": "http://localhost:serverPort",
"secure": false
}
}
proxy.config.js
const PROXY_CONFIG = [
{
context: [
"/api",
"/auth",
"/oauth"
],
target: "http://localhost:8080",
secure: false
}
];
module.exports = PROXY_CONFIG;
并更新package.json
"scripts": {
"ng": "ng",
"start": "ng serve --proxy-config proxy.conf.json",
"build": "ng build",
"test": "ng test",
"lint": "ng lint",
"e2e": "ng e2e"
},
这将允许/api
之后的任何内容到达服务器
答案 1 :(得分:0)
我将cors属性添加到webapi配置...并且它开始工作... var cors = new EnableCorsAttribute(“”,“”,“GET,PUT,POST,PATCH,DELETE,OPTIONS”); config.EnableCors(CORS);
答案 2 :(得分:0)
如果您的应用中没有proxy.conf.json
文件,以允许在不同端口上访问服务器,则通常会发生这种情况。 Angular有一个功能可以阻止流量进入不同的端口,除非您强制使用。如果您还没有proxy.conf.json
文件,则需要在app root