<?xml version="1.0" encoding="UTF-8"?>
<form xmlns="http://www.intellij.com/uidesigner/form/" version="1" bind-to-class="org.jetbrains.builtInWebServer.BuiltInServerConfigurableUi">
- <grid id="27dc6" binding="mainPanel" layout-manager="GridLayoutManager" row-count="2" column-count="3" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
+ <grid id="27dc6" binding="mainPanel" layout-manager="GridLayoutManager" row-count="3" column-count="3" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
<margin top="0" left="0" bottom="0" right="0"/>
<constraints>
<xy x="20" y="20" width="1077" height="321"/>
<properties/>
<border type="none"/>
<children>
- <component id="696ad" class="javax.swing.JLabel">
- <constraints>
- <grid row="0" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
- </constraints>
- <properties>
- <text resource-bundle="messages/XmlBundle" key="setting.value.builtin.server.port.label"/>
- </properties>
- </component>
<component id="e47e0" class="com.intellij.ui.PortField" binding="builtInServerPort">
<constraints>
<grid row="0" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="1" indent="0" use-parent-layout="false"/>
<text resource-bundle="messages/XmlBundle" key="setting.value.can.accept.external.connections"/>
</properties>
</component>
- <vspacer id="c36c4">
+ <component id="2c830" class="javax.swing.JLabel">
<constraints>
- <grid row="1" column="0" row-span="1" col-span="3" vsize-policy="6" hsize-policy="1" anchor="0" fill="2" indent="0" use-parent-layout="false"/>
+ <grid row="0" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
+ </constraints>
+ <properties>
+ <text resource-bundle="messages/XmlBundle" key="setting.value.builtin.server.port.label"/>
+ </properties>
+ </component>
+ <vspacer id="70613">
+ <constraints>
+ <grid row="2" column="2" row-span="1" col-span="1" vsize-policy="6" hsize-policy="1" anchor="0" fill="2" indent="0" use-parent-layout="false"/>
</constraints>
</vspacer>
+ <component id="15e76" class="javax.swing.JCheckBox" binding="allowUnsignedRequestsCheckBox">
+ <constraints>
+ <grid row="1" column="0" row-span="1" col-span="3" vsize-policy="0" hsize-policy="3" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
+ </constraints>
+ <properties>
+ <text resource-bundle="messages/XmlBundle" key="setting.value.builtin.server.allow.unsigned.requests"/>
+ </properties>
+ </component>
</children>
</grid>
</form>
private PortField builtInServerPort;
private JCheckBox builtInServerAvailableExternallyCheckBox;
+ private JCheckBox allowUnsignedRequestsCheckBox;
public BuiltInServerConfigurableUi() {
builtInServerPort.setMin(1024);
@Override
public boolean isModified(@NotNull BuiltInServerOptions settings) {
return builtInServerPort.getNumber() != settings.builtInServerPort ||
- builtInServerAvailableExternallyCheckBox.isSelected() != settings.builtInServerAvailableExternally;
+ builtInServerAvailableExternallyCheckBox.isSelected() != settings.builtInServerAvailableExternally ||
+ allowUnsignedRequestsCheckBox.isSelected() != settings.allowUnsignedRequests;
}
@Override
public void apply(@NotNull BuiltInServerOptions settings) {
boolean builtInServerPortChanged = settings.builtInServerPort != builtInServerPort.getNumber() || settings.builtInServerAvailableExternally != builtInServerAvailableExternallyCheckBox.isSelected();
+ settings.allowUnsignedRequests = allowUnsignedRequestsCheckBox.isSelected();
if (builtInServerPortChanged) {
settings.builtInServerPort = builtInServerPort.getNumber();
settings.builtInServerAvailableExternally = builtInServerAvailableExternallyCheckBox.isSelected();
@Attribute
public boolean builtInServerAvailableExternally = false;
+ @Attribute
+ public boolean allowUnsignedRequests = false;
+
public static BuiltInServerOptions getInstance() {
return ServiceManager.getService(BuiltInServerOptions.class);
}
}
internal fun HttpRequest.isSignedRequest(): Boolean {
+ if (BuiltInServerOptions.getInstance().allowUnsignedRequests) {
+ return true
+ }
+
// we must check referrer - if html cached, browser will send request without query
val token = headers().get(TOKEN_HEADER_NAME)
?: QueryStringDecoder(uri()).parameters().get(TOKEN_PARAM_NAME)?.firstOrNull()
@JvmOverloads
internal fun validateToken(request: HttpRequest, channel: Channel, isSignedRequest: Boolean = request.isSignedRequest()): HttpHeaders? {
+ if (BuiltInServerOptions.getInstance().allowUnsignedRequests) {
+ return EmptyHttpHeaders.INSTANCE
+ }
+
request.headers().get(HttpHeaderNames.COOKIE)?.let {
for (cookie in ServerCookieDecoder.STRICT.decode(it)) {
if (cookie.name() == STANDARD_COOKIE.name()) {
setting.builtin.server.category.label=Built-in server
setting.value.builtin.server.port.label=&Port\:
-setting.value.can.accept.external.connections=Can accept &external connections
\ No newline at end of file
+setting.value.can.accept.external.connections=Can accept &external connections
+setting.value.builtin.server.allow.unsigned.requests=&Allow unsigned requests