角度 7 上的 CORS 配置
Posted
技术标签:
【中文标题】角度 7 上的 CORS 配置【英文标题】:CORS config on angular 7 【发布时间】:2019-05-15 19:19:57 【问题描述】:您好,我一直在努力让CORS
工作。我看到了this post,我认为这让我更接近了,但是,我已经按照该帖子中的链接到angular.io 并使用了它。
所以让我解释一下我的问题,我正在创建代理:
var HttpsProxyAgent = require('https-proxy-agent');
var proxyConfig = [
context: '/api',
target: 'http://localhost:3000',
secure: false
];
function setupForCorporateProxy(proxyConfig)
var proxyServer = process.env.http_proxy || process.env.HTTP_PROXY;
if (proxyServer)
var agent = new HttpsProxyAgent(proxyServer);
console.log('Using corporate proxy server: ' + proxyServer);
proxyConfig.forEach(function(entry)
entry.agent = agent;
);
return proxyConfig;
module.exports = setupForCorporateProxy(proxyConfig);
我打电话给npm start
,脚本看起来像:"start": "ng serve --proxy-config proxy.js"
但我正在尝试做一个看起来像这样的帖子:
let url:string='/api/Acounts/Login';
this.http.post(url, body).subscribe(x=> x.doStuff);
我希望它调用http://localhost:3000/Accounts/Login
,但它实际上调用http://localhost:42000/api/Accounts/Login
所以我的问题是为什么它调用不正确的地址,我怎样才能让它调用正确的地址?
编辑:
我也想加protractor.conf.js
。
const SpecReporter = require('jasmine-spec-reporter');
exports.config =
allScriptsTimeout: 11000,
specs: [
'./e2e/**/*.e2e-spec.ts'
],
capabilities:
'browserName': 'chrome'
,
directConnect: true,
baseUrl: 'http://localhost:4200/',
framework: 'jasmine',
jasmineNodeOpts:
showColors: true,
defaultTimeoutInterval: 30000,
print: function()
,
onPrepare()
require('ts-node').register(
project: 'e2e/tsconfig.e2e.json'
);
jasmine.getEnv().addReporter(new SpecReporter( spec: displayStacktrace: true ));
;
【问题讨论】:
***.com/a/46159168/4078143 【参考方案1】:我已经研究了大约 2 天,我在这里遇到了多个问题。首先是我正在处理的MVC
项目需要一些事情发生。
我需要在WebConfig
文件中添加一些内容:
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Methods" value="GET, PUT, POST, DELETE, HEAD, OPTIONS" />
<add name="Access-Control-Allow-Headers" value="Origin, X-Requested-With, Content-Type, Accept" />
</customHeaders>
我需要添加到GlobalApplication.cs
文件中。
private void GlobalApplication_PreRequestHandlerExecute(object sender, EventArgs e)
#if DEBUG
if (Request.HttpMethod == "OPTIONS")
Response.StatusCode = 200;
Response.End();
return;
#endif
希望这对其他人有所帮助!
【讨论】:
这是我最近在使用 Vue 应用程序时也遇到的问题。我们的网络服务器设置略有不同,但您可能还需要处理以下情况。我在 nginx 服务器上遇到了这些问题:我必须为所有OPTIONS
预检请求手动指定 204
响应。我还发现我的原始标头没有考虑 4xx
响应,并且必须确保它始终被设置(NGINX 有一个 always
标志)。希望这会有所帮助,但可能与您的具体情况无关。
谢谢!我还没有注意到任何东西,但我会记住这一点。以上是关于角度 7 上的 CORS 配置的主要内容,如果未能解决你的问题,请参考以下文章